• iServer发布ES服务查询设置最大返回数量


    作者:lly

    一、问题详情

    当我们发布ES服务为数据服务,进行查询时,发现当查询的返回的结果超过1W条时,会查询失败,报错“all shards failed”。
    在这里插入图片描述

    二、错误排查

    1.通过对错误的排查,发现和iServer的关联不大,而是ES本身的限制,当用elasticsearch进行深度分页查询时的size-from大于10000的时候,就会报错“org.elasticsearch.search.query.QueryPhaseExecutionException”

    Caused by: org.elasticsearch.search.query.QueryPhaseExecutionException: Result window is too large, from + size must be less than or equal to: [10000] but was [19998]. 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.
            at org.elasticsearch.search.DefaultSearchContext.preProcess(DefaultSearchContext.java:206) ~[elasticsearch-6.1.1.jar!/:6.1.1]
            at org.elasticsearch.search.query.QueryPhase.preProcess(QueryPhase.java:90) ~[elasticsearch-6.1.1.jar!/:6.1.1]
            at org.elasticsearch.search.SearchService.createContext(SearchService.java:564) ~[elasticsearch-6.1.1.jar!/:6.1.1]
            at org.elasticsearch.search.SearchService.createAndPutContext(SearchService.java:528) ~[elasticsearch-6.1.1.jar!/:6.1.1]
            at org.elasticsearch.search.SearchService.executeQueryPhase(SearchService.java:324) ~[elasticsearch-6.1.1.jar!/:6.1.1]
            at org.elasticsearch.search.SearchService$2.onResponse(SearchService.java:310) ~[elasticsearch-6.1.1.jar!/:6.1.1]
            ... 9 common frames omitted
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    2.根据报错,我们发现是需要去设置index.max_result_window参数去调大能返回的最大值,我们可以通过一下请求,来对ES所有索引进行设置

    var settings = {
      "url": "127.0.0.1:9200/_settings",
      "method": "PUT",
      "timeout": 0,
      "headers": {
        "Content-Type": "application/json"
      },
      "data": JSON.stringify({
        "index.max_result_window": "2000000000"
      }),
    };
    
    $.ajax(settings).done(function (response) {
      console.log(response);
    });
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    3.设置完成后,我们访问http://172.16.15.124:9200/huawei1/_settings?pretty,可以看到已成功设置,再次查询即可成功返回。
    在这里插入图片描述

    三、注意事项

    index.max_result_window参数是integer类型,不能设置得无限大。

  • 相关阅读:
    Java实现SFTP传输
    嵌入式开发:技巧和窍门——干净地从引导加载程序跳转到应用程序代码
    001 rabbitmq减库存demo direct
    动态规划专项---最长上升子序列模型
    java http
    CISSP学习笔记:安全脆弱性、威胁和对策
    Jupyter notebook kernel 操作大全
    vulnhub Monitoring: 1
    746. 使用最小花费爬楼梯 (Swift版本)
    如何实现不同MongoDB实例间的数据复制?
  • 原文地址:https://blog.csdn.net/supermapsupport/article/details/125495830