Elasticsearch搜索不同的结果

时间:2016-10-18 09:48:52

标签: laravel elasticsearch eloquent

我在Eloquent模型上使用带有laravel和Elasticquent https://github.com/elasticquent/Elasticquent的Elasticsearch。 我的项目的每个用户都可以搜索不同的对象结果。 我有例如

$user_books->addToIndex();
Books::search($search);

问题是,每当有人进入当前步骤时,弹性搜索就会充满他的结果。最后,我将每个用户的综合结果与他们的书籍放在一起..这是一个问题。 我需要一个用户只搜索他的结果。 我怎样才能做到这一点?我认为我可能必须在搜索后删除索引,因为我不再需要它们了。

然后

1 个答案:

答案 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