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

  • 相关阅读:
    Window10安装ruby
    基于Skywalking的全链路跟踪实现
    鸿蒙笔记--Socket
    2023年9月 青少年软件编程等级考试Scratch四级真题,含答案解析
    面试知识点整理:Skia 架构的场景渲染
    论文翻译:2022_Time-Frequency Attention for Monaural Speech Enhancement
    Java基础-并发篇
    案例精选|聚铭网络多产品联合部署为北京迎祥酒店建立信息安全屏障
    yum安装报错Error: rpmdb open failed
    猿创征文|Vue结合Vant-ui实现数据列表上拉加载更多,下拉刷新功能
  • 原文地址:https://blog.csdn.net/supermapsupport/article/details/125495830