elasticsearch 查詢size超出限制報錯 Result window is too large, from + size must be less than or equal to: [10000] but was [1000000].解決方案


使用elasticsearch的時候,size的值太大的話會報以下錯誤。

"type":"query_phase_execution_exception","reason":"Result window is too large, from + size must be less than or equal to: [10000] but was [1000000]. See the scroll api for a more efficient way to request large data sets. This limit can be set by changing the [index.max_result_window] index level setting."}

因為elasticsearch默認限制size是10000。

解決方法:

一種是調整index.max_result_window的大小,調整到盡量大的值。

這里使用另一種方式,使用scroll api讀取數據量超過10000的數據。

scroll api是專門為了讀取大量數據設計的

首先設置每次讀取的數量size和這批請求的有效時間scroll。

POST /index名字/_search?scroll=1m # 這里設置scroll為1m,意味着這批請求有效讀取的時間是一分鍾 { "size": 100, # 每次請求查詢的大小 "query": { # 你的查詢條件 } }

首次讀取會返回一個scroll_id,后續讀取只需要通過scroll_id不斷請求讀取剩余部分的數據,直到最后一批數據讀取結束,后續每批數據返回的數量小於等於第一次請求時設置的size值。

POST /_search/scroll # 不需要填寫index名字 { "scroll" : "1m", # 可選項,填寫將會把scroll_id的有效時間更新 "scroll_id" : "DXF1ZXJ5QW5kRmV0Y2gBAAAAAAAAAD4WYm9laVYtZndUQlNsdDcwakFMNjU1QQ==" # 首次提交的scroll_id }
scroll api的官方文檔https://www.elastic.co/guide/en/elasticsearch/reference/current/search-request-body.html#request-body-search-scroll


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM