我正在使用Laravel,ElasticSearch和MongoDB构建Web应用程序。为此,我使用https://github.com/jenssegers/laravel-mongodb连接Laravel和MongoDB(完美运行)和https://github.com/elasticquent/Elasticquent连接到Elasticsearch(我遇到问题)。
我的模型看起来像这样:
namespace App;
use Moloquent;
use Elasticquent\ElasticquentTrait;
class Article extends Moloquent
{
use ElasticquentTrait;
protected $collection = 'Articles';
}
我的控制器搜索功能如下所示:
public function search()
{
$texte = $_GET['texte'];
$articles = Article::where('Title', 'regexp', "/$texte/")->get();
//$articles = Article::search('bu');
//dd($articles);
return view('pages.articles', compact('articles'));
}
当使用Article模型中的where函数时,我得到了这个,即3个结果
ElasticquentCollection {#134 ▼
#items: array:3 [▼
0 => Article {#142 ▶}
1 => Article {#143 ▶}
2 => Article {#144 ▶}
]
}
当使用搜索功能时,我得到类似的结果,没有结果
ElasticquentResultCollection {#156 ▼
#took: 1
#timed_out: false
#shards: array:3 [▶]
#hits: array:3 [▶]
#aggregations: []
#instance: Article {#161 ▶}
#items: []
}
是否有人必须处理相同类型的架构并可以帮助我解决这个问题?
感谢您的帮助!
答案 0 :(得分:0)
更改
$articles = Article::search('bu');
到
$articles = Article::search('bu')->get();
您没有抓取该集合。您必须使用get()
或first()
来收集搜索到的内容。