elasticsearch 默认是以utc时间存储的,现在我创建了两个索引,分别用存储了utc格式 和localtime格式的时间
使用百度echarts折线图展现对transaction_time聚合的结果
图一是对localtime聚合的结果,
图二是对utc时间聚合的结果,
可以看出,在使用es直方图进行聚合的时候,无论存储的的是localtime 还是utc,都会被转换成utc的结果输出。
所以如果要在页面展示正常localtime时间,需要在直方图聚合的时候加上time_zone参数
res = $elastic.search index:"card_transaction",body:{
aggregations:{
hour:{
date_histogram{
field:"transaction_time",
interval:"5m",
time_zone:"+08:00",
format:"YYYY/MM/dd HH:mm"
}}}}
res = $elastic.search index:"card_transaction_utc",body:{
aggregations:{
hour:{
date_histogram{
field:"transaction_time",
interval:"5m",
time_zone:"+08:00",
format:"YYYY/MM/dd HH:mm"
}}}}