ES報錯Result window is too large問題處理

我在使用Elasticsearch進行search查詢的過程當中,出現了Result window is too large問題。
這裏簡單作一個報錯復現:html

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參數來增大結果窗口大小。node

我google了修改方法,命令以下:
python

curl -XPUT http://127.0.0.1:9200/cmdb-now/_settings -d '{ "index" : { "max_result_window" : 100000000}}'

須要注意的是,cmdb-now這裏是我ES索引的名字,所以你須要它替換成你對應的索引名稱進行修改。
有關官方針對index的相關配置介紹,能夠點擊這裏進行查看。
json

相關文章
相關標籤/搜索