其他分享
首页 > 其他分享> > ES进行date_histogram时间聚合,聚合结果时间不正确问题

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