一、問題描述
Elasicsearch版本7.8,執(zhí)行DSL查詢
GET /my_test_sort/_search
{
"query": {
"match_all": {}
},
"from": 1,
"size": 10000
}
結(jié)果Elasicsearch報如下錯誤
Result window is too large, from + size must be less than or equal to: [10000] but was [10001].
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.
其實Elasicsearch這個錯誤已經(jīng)提示的很明顯了,甚至提出了解決方案。大概意思是說:結(jié)果窗口太大,from+size必須小于或等于10000,但我們檢索的DSL中from+size=10001。我們在查詢大量數(shù)據(jù)時可以采用 scroll api 這種高效的方式。結(jié)果窗口大小可以修改索引參數(shù):max_result_window進(jìn)行設(shè)置
二、問題分析
其實問題已經(jīng)很明了了,我們可以查看相關(guān)官網(wǎng)的解釋進(jìn)一步贅述
Elasicsearch通過index.max_result_window參數(shù)控制了能夠獲取的數(shù)據(jù)總數(shù)from+size的最大值,默認(rèn)是10000條。但是,由于數(shù)據(jù)需要從其它節(jié)點分別上報到協(xié)調(diào)節(jié)點,因此搜索請求的數(shù)據(jù)越多,會導(dǎo)致在協(xié)調(diào)節(jié)點占用分配給Elasticsearch的堆內(nèi)存和搜索、排序時間越大。針對這種滿足條件數(shù)量較多的深度搜索,官方建議我們使用Scroll
三、解決方案
已經(jīng)創(chuàng)建好的索引,可以動態(tài)的修改max_result_window的大小
PUT /my_test_sort/_settings?preserve_existing=true
{
"max_result_window": "200000"
}
新建索引的時候可以直接指定max_result_window的大小
PUT index_name
{
"settings": {
"max_result_window": "200000"
}
}
如果沒有執(zhí)行DSL的環(huán)境,可以直接在服務(wù)器上執(zhí)行文章來源:http://www.zghlxwxcb.cn/news/detail-590255.html
curl -H "Content-Type: application/json" -X PUT 'http://127.0.0.1:9200/my_test_sort/_settings?preserve_existing=true' -d '{"max_result_window" : "200000"}'
max_result_window支持的最大返回數(shù)是2^31-1,也就是2147483647文章來源地址http://www.zghlxwxcb.cn/news/detail-590255.html
到了這里,關(guān)于elasticsearch結(jié)果窗口限制10000[from+size小于或等于10000]的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!