是否有可能讓elasticsearch早日終止搜索並返回找到的前N個匹配項?在elasticsearch中提前返回結果
我有一個很大的數據集,並且注意到當我發出一個查詢命中所有記錄時,返回前10個結果比查詢僅遇到少量結果要花費更長的時間。我並不需要完整的結果數,我不關心這10個結果是否是「最佳」匹配。
是否有可能讓elasticsearch早日終止搜索並返回找到的前N個匹配項?在elasticsearch中提前返回結果
我有一個很大的數據集,並且注意到當我發出一個查詢命中所有記錄時,返回前10個結果比查詢僅遇到少量結果要花費更長的時間。我並不需要完整的結果數,我不關心這10個結果是否是「最佳」匹配。
除了設置大小爲Richa的答案,你可能還需要檢查兩個following request parameters,即:
timeout
:允許您指定最大執行時間(以毫秒爲單位)。只要到達超時時間,ES會立即做出響應,並返回迄今爲止的結果。terminate_after
:文檔的最大數量在返回所花費的時間量每個碎片您可以使用size
GET /index/type/_search?size=5
這有沒有影響(我反正)獲得。 「大小」指定返回結果的數量,但elasticsearch仍然報告完整的hitcount(可用匹配的數量),我認爲這意味着它實際上仍在搜索整個數據庫,而不是在找到前5個數據庫時停止。 –
我認爲這可能是答案,但令人驚訝的是,terminate_after並沒有像我想象的那樣提高性能,但它可能與查詢被緩存(或由操作系統緩存的索引文件)有關它之前。 –
如果您有5個分片(默認設置),並且您的回覆中需要5個分數,您可能需要嘗試'terminate_after = 1',這應該有所斬獲。 – Val