我在使用Elasticsearch進行search查詢的過程中,出現了Result window is too large
問題。
這裡簡單做一個報錯復現:
In [1]: import requests In [2]: requests.get(`http://127.0.0.1:9200/cmdb-now/_search?page=1&size=10000000`).json() Out[2]: { u`error`: { u`failed_shards`: [ { u`index`: u`cmdb-now`, u`node`: u`ldeZMZRAR6uZpAiIr5QxBQ`, u`reason`: { u`reason`: u`Result window is too large, from + size must be less than or equal to: [10000] but was [10000000]. 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 parameter.`, u`type`: u`query_phase_execution_exception` }, u`shard`: 0 } ], u`grouped`: True, u`phase`: u`query`, u`reason`: u`all shards failed`, u`root_cause`: [ { u`reason`: u`Result window is too large, from + size must be less than or equal to: [10000] but was [10000000]. 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 parameter.`, u`type`: u`query_phase_execution_exception` } ], u`type`: u`search_phase_execution_exception` }, u`status`: 500 }
從上面的報錯資訊,可以看到ES提示我結果視窗太大了,目前最大值為10000,而我卻要求給我10000000。並且在後面也提到了要求我修改index.max_result_window
引數來增大結果視窗大小。
我google了修改方法,命令如下:
curl -XPUT http://127.0.0.1:9200/cmdb-now/_settings -d `{ "index" : { "max_result_window" : 100000000}}`
需要注意的是,cmdb-now
這裡是我ES索引的名字,因此你需要它替換成你對應的索引名稱進行修改。
有關官方針對index的相關配置介紹,可以點選這裡進行檢視。