ES查询直方图聚合区间结果min越界问题

● 系统环境说明

Linux环境:centos 7.2
腾讯云ES Service:7.5.1
Java:1.8.0_181

● 集群配置

32核64GB, 3个(主节点)
50GB 高性能云盘 x1

32核64GB, 12个(数据节点)
6000GB SSD云硬盘 x2

问题

ES查询直方图数据,结果明显发生了越界:

问题原因

这里的越界其实是符合预期的,因为真正的边界取决于interval,而不是min,所表现出的特征是:
结果中看到的最小key(1607040000000000),可以被interval(864000000000)所整除

当extended_bounds.min不被interval整除的时候,默认的最小值为:

key = extended_bounds.min - (extended_bounds.min % interval)

解决方法

histogram提供了offset,以偏移桶的边界,算法是:

offset = extended_bounds.min % interval

正确的做法是出现这种情况时,设置offset值,这样最小key就会等于extended_bounds.min,问题就会得到解决。

offset原理:
https://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-bucket-histogram-aggregation.html#_offset_2

posted @ 2020-12-29 18:14  仓皇  阅读(631)  评论(0编辑  收藏  举报