ES进行date_histogram时间聚合,聚合结果时间不正确问题
作者:互联网
在做项目中,有一个需求是统计本周内每天的漏洞数量,我选用的是ES中的date_histogram函数来进行聚合统计;
但是出现了一个问题,聚合出来的结果和想要统计的结果时间不一致,如下图所示
时间区间过滤8号到14号,应该显示7个时间段,结果却显示出8个时间段分别是7号-14号。
经过排查发现是ES在聚合时的时区问题,ES做时间聚合时自身不是东八区时间(中国时间),需要offset属性减8小时,
extended_bounds属性里的min和max参数各加8小时才能统计正确,如下图所示
附代码:
"size": 0,
"query": {
"bool": {
"filter": {
"range": {
"lOccurTime": {
"gte": 1612713600000,
"lte": 1613318399000
}
}
}
}
},
"aggs": {
"rh": {
"date_histogram": {
"field": "lOccurTime",
"interval": "day",
"offset": "-8h",
"min_doc_count": 0,
"extended_bounds": {
"min": 1612742400000,
"max": 1613347199000
}
}
}
}
标签:聚合,min,histogram,时间,date,ES 来源: https://www.cnblogs.com/ranhong/p/14411363.html