我在Eloquent模型上使用带有laravel和Elasticquent https://github.com/elasticquent/Elasticquent的Elasticsearch。 我的项目的每个用户都可以搜索不同的对象结果。 我有例如
$user_books->addToIndex();
Books::search($search);
问题是,每当有人进入当前步骤时,弹性搜索就会充满他的结果。最后,我将每个用户的综合结果与他们的书籍放在一起..这是一个问题。 我需要一个用户只搜索他的结果。 我怎样才能做到这一点?我认为我可能必须在搜索后删除索引,因为我不再需要它们了。
然后
答案 0 :(得分:0)
无需删除索引, 相反,您应该通过构建自定义索引来索引用户添加的图书 他们的 user_id 是这样的: -
$data = [
'body' => [
'book' => '$book->name',
'user_id' => Auth::user()->id,
],
'index' => 'your application name',
'type' => 'books',
'id' => $book->id,
];
然后您可以使用自定义查询来搜索属于该用户的图书,就像这样
$books = Book::searchByQuery(array('match' => array('user_id' => Auth::user()->id)));
请参阅基于查询的搜索和索引和映射部分here