美文网首页我用 Linux每周500字技术文
ES报错Result window is too large问题

ES报错Result window is too large问题

作者: 瑟瑟发抖的小电视 | 来源:发表于2016-06-06 16:51 被阅读13447次

    我在使用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的相关配置介绍,可以点击这里进行查看。

    相关文章

      网友评论

        本文标题:ES报错Result window is too large问题

        本文链接:https://www.haomeiwen.com/subject/eoxddttx.html