• 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类型,不能设置得无限大。

  • 相关阅读:
    TypeScript中的泛型使用详解
    营养成分查询易语言代码
    Java中的自定义异常
    JavaScript 运算符【‘算术运算符’,‘赋值运算符’,‘一元运算符’,‘比较运算符’,‘逻辑运算符’,‘运算符优先级’】 详解和配案例 开发当中很重要
    What next? 下一步会怎样?| 经济学人封面社论双语精翻
    企业数字化转型资料合集
    08-JS对象、原型及原型链
    项目运行没内容-----java.bug1
    C语言之指针练习题
    python爬虫SHA案例:某直播大数据分析平台
  • 原文地址:https://blog.csdn.net/supermapsupport/article/details/125495830