如何只使用建议者执行Elasticsearch Multisearch?

时间:2014-07-22 15:24:49

标签: elasticsearch

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

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

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

但是,它还会自动对所选索引执行match_all查询。我当然可以通过将searchType设置为count来最大限度地减少这种影响,但结果比两个单独的卷曲请求更糟糕。

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

e.g。

  {
       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查询并返回索引中的所有内容。

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

提前致谢

1 个答案:

答案 0 :(得分:1)

确保大小= 0,这样就不会返回任何命中,只会提示建议。

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

每个请求。