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

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);
});

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

三、注意事项

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值