ES个性化配置通过Kibana设置Elasticsearch最大返回条数

elasticsearch 默认输出最多一万条,超过就会报错:Result window is too large, from + size must be less than or equal to,但是日常部分数据查询是要会超过 10000 的尤其是对数据进行统计的情况下,数量必然会超过,那如何才能解决这个问题呢?我们需要对该配置进行调整。
报错样例:

科普 --- 梅森素数

2147483647(二十一亿四千七百四十八万三千六百四十七)是 2147483646 与 2147483648 之间的自然数,也是欧拉在 1772 年所发现的一个梅森素数,它等于 2^31-1,是 32 位操作系统中最大的符号型整型常量
在 32 位操作系统中,由于是二进制,其能最大存储的数据是 1111111111111111111111111111111(31 个 1)。正因为此,体现在 windows 或其他可视系统中的十进制应该为 2147483647。
所以一般 32 位游戏中,钱的数量最大为 2147483647。例如:QQ 农场 经验值最大数量为 2147483647。
那这个数和 ES 有什么关系呢?你猜对了 ES 的最大返回也是 2^31-1,也就是 2147483647。他是通过 index.max_result_window 参数进行设置的,默认值是 10000,这就是查询超过 10000 后报错的原因。

项目上使用的是 filebeat 进行数据采集,因此我们先查看下默认建好的索引是如何配置的:

通过查询发现默认并没有配置这个参数

通过 kibana 的管理界面对该值进行配置:

使用 curl 命令也是可以的:

curl -H "Content-Type: application/json" -XPUT http://192.168.47.1:9200/filebeat-7.9.1-2021.03.27-000001/_settings -d '{ "index" : { "max_result_window" : 2147483647}}'

修改完成后重新到索引查询界面进行查看会发现该配置已经进行更新


调整后再次进行查询已经不再报错,并且正常返回了相关数据

进行个计数统计返回行数为 10692

和日志数据数量能完全匹配,问题解决。

总结:这样只是对单个索引做了调整,生产环境可能会有很多索引,如果一个个做的话就太费劲了,因此建议同类数据源采用索引模板来进行配置,把模板的参数进行调整,然后根据模板生成的索引也就不存在这个问题了。

文章转载自:https://blog.csdn.net/wikowin/article/details/115260970

posted @ 2024-07-06 11:55  Journey&Flower  阅读(110)  评论(0编辑  收藏  举报