如何执行一个Elasticsearch多搜索,只有建议



我需要在两个单独的索引中返回4个单独的建议者的建议。

我目前正在通过向Elasticsearch发送两个单独的请求(每个索引一个)并在我的应用程序中组合结果来实现这一点。显然,当Multisearch API可用时,这似乎不太理想。

通过使用Multisearch API,我能够将这些建议请求组合成一个,并从两个索引中正确检索所有4个完成建议器的结果。

但是,它也会自动对所选索引执行match_all查询。当然,我可以通过将searchType设置为count来最小化这种影响,但结果比两个单独的curl请求更糟糕。

似乎无论我如何尝试,我都无法阻止Multisearch API对每个索引执行某种查询。

  {
       index: 'users',
       type: 'user'
  },
  {
      suggest: {
            users_suggest: {
                 text: term,
                 completion: {
                     size : 5,
                     field: 'users_suggest'
                 }
      }
  },
 {
       index: 'photos',
       type: 'photo'
 },
 {
      suggest: {
            photos_suggest: {
                 text: term,
                 completion: {
                     size : 5,
                     field: 'photos_suggest'
                 }
            }
      }
 }

像上面这样的请求显然省略了这个多搜索请求的{query:{}部分,仍然执行match_all查询并返回索引中的所有内容。

是否有任何方法可以防止查询发生,以便我可以简单地获得组合完成建议的结果?或者有另一种方法在一个查询中搜索多个索引上的多个建议?

Thanks in advance

让size=0,这样不会返回任何命中,只返回建议。

{
    "size": 0,
    "suggest":{}
}

用于每个请求。

最新更新