【elasticsearch】数据早8小时Or晚8小时,你知道为

2019-12-30  本文已影响0人  独行侠梦
前言
解决方案
如果是java写入es怎么解决时区问题?
/**
     * String timeZoneConvert = timeZoneConvert(
     *              new Date().getTime()
     *              , "yyyy-MM-dd'T'HH:mm:ss.SSSZ",
     *              "Asia/Shanghai");
     *              
     * @param date 毫秒
     * @param pattern format时间格式
     * @param timeZone 时区
     * @return 如:2019-12-30T16:32:07.616+0800
     */
    public static String timeZoneConvert(Long date,String pattern,String timeZone){
        SimpleDateFormat simpleDateFormat=new SimpleDateFormat(pattern);
        simpleDateFormat.setTimeZone(TimeZone.getTimeZone(timeZone));
        return simpleDateFormat.format(date);
    }
如果是logstash写入es怎么解决时区问题?
 mutate{
        gsub => [
           "time", "[+]", "T"
        ]
      } 
        mutate{
      replace => ["time","%{time}+08:00"]
      }

或是:

date {
    match => ["timestamp", "yyyy-MM-dd HH:mm:ss"]
    target => "my_timestamp"
    timezone => "+08:00"
}
如果是语句聚合es数据怎么解决时区问题?
"aggs": {
    "by_day": {
      "date_histogram": {
        "field":     "date",
        "interval":  "day",
        "time_zone": "Asia/Shanghai"
      }
    }
  }
kibana显示怎么解决时区问题?
file
原理&试验
Es中和时间相关的数据类型
试验
file
{
    "AsiaTime":"2019-12-30T16:32:07.616+0800",
    "newDateTime":1577694727581,
    "localTimeNow":"2019-12-30T16:32:07.615",
    "systemCurrentTimeMilis":1577694727581,
    "newDate":1577694727581
}
两个实验对时区的思考

首先来说实验一,为什么kibana上显示的时比数据时间多8个小时呢?明明是30号的数据,愣是跑到31号去了?

总结

欢迎来公众号【侠梦的开发笔记】 一起交流进步

上一篇 下一篇

猜你喜欢

热点阅读