我需要從兩個單獨的索引中返回來自4個獨立建議者的建議。如何僅使用建議者執行Elasticsearch Multisearch?
我目前正在通過向Elasticsearch發送兩個單獨的請求(每個索引一個)並將結果組合到我的應用程序中來完成此操作。顯然這在Multisearch API可用時看起來並不理想。
從使用Multisearch API我能夠將這些建議請求合併爲一個,它能夠從兩個索引中正確檢索來自所有4個完成建議的結果。
但是,它也會自動對所選索引執行match_all
查詢。我當然可以通過將searchType
設置爲count
來最大限度地減少這種影響,但結果比兩個單獨的捲曲請求更差。
看來,無論我嘗試什麼,我都無法阻止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'
}
}
}
}
等,其清楚省略了該multisearch請求的{query:{}
部分以上的請求,還是執行match_all
查詢和在索引中返回的一切。
有沒有辦法阻止查詢發生,以便我可以簡單地獲得組合的完成建議結果?或者還有另一種方法可以在一個查詢中搜索多個索引中的多個提示?
在此先感謝
完全按照您的建議進行操作確實可以防止返回結果,但它仍會返回總計數。這對我意味着Elasticsearch仍然在執行一些不需要的工作,就像我只是簡單地將searchType設置爲count一樣。或者我錯了? – Gordo
是的,如果您有搜索請求,那麼elasticsearch將默認搜索文檔,並在指定的情況下執行其他操作(聚合,刻面和提示)。事情是,如果我們不需要任何文檔(指定size = 0),那麼該操作將在少量時間內執行。 – progrrammer
非常感謝您的澄清 – Gordo