我需要在两个单独的索引中返回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":{}
}
用于每个请求。