【问题标题】:Elasticsearch searching in different resultsElasticsearch 搜索不同的结果
【发布时间】:2016-10-18 20:19:06
【问题描述】:
我在 Eloquent 模型上使用 Elasticsearch 和 laravel 和 Elasticquent https://github.com/elasticquent/Elasticquent。
我项目的每个用户都可以搜索不同的对象结果。
我有例如
$user_books->addToIndex();
Books::search($search);
问题是,每当有人进入当前步骤时,elasticsearch 都会充满他的结果。最后,我为每个用户和他们的书一起获得了一个组合结果.. 这是一个问题。
我需要一个用户只搜索他的结果。
我怎样才能做到这一点?我想我可能必须在搜索后删除索引,因为我不再需要它们了。
然后
【问题讨论】:
标签:
laravel
elasticsearch
eloquent
【解决方案1】:
无需删除您的索引,
相反,您应该通过构建自定义索引来索引用户添加的书籍
他们的 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