【问题标题】: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

    【讨论】:

      猜你喜欢
      • 2015-11-11
      • 1970-01-01
      • 1970-01-01
      • 2017-03-06
      • 2021-03-08
      • 1970-01-01
      • 2016-03-17
      • 2015-03-22
      • 2019-04-06
      相关资源
      最近更新 更多