时间中时区的几个名词:
- GMT:格林威治标准时间
- UTC:世界协调时间
- DST:夏日节约时间
- CST:中国标准时间
问题来源
存入时间
数据库实际存储时间
2017-06-21 10:09:51(一致)
kibana查看时间
2017-06-21 18:09:51(晚8小时)
问题解决
如果在写入数据时不加时区信息,ElasticSearch默认按UTC时区写入,默认是0时区,但是当我们查看的时候,kibana会读取我们当地的时间,即东八区,进行转换,所以我们看到的时间会晚8小时。
所以最佳实践方案就是:我们在往es提交日期数据的时候,直接提交带有时区信息的日期字符串,如:“2016-07-15T12:58:17.136+0800”。
"insertTime": {
"type": "date"
}
经过测试,如果通过kibana写入数据,然后读取,不会出现这个问题。
通过logstash/后台写入才会出现时区问题。解决方案是在写入前 +8 或者 指定时区。