问题描述

使用ES保存日志数据,当天插入的数据在kibana中虽然可以通过开发工具的DSL查询到,但是却无法在日志展示中看到,要到第二天才可以看到。

问题原因

ES保存数据时,如果date类型的字段没有指定时区,它会认为其为UTC时间,也就是零时区时间。
当检索时,kibana会根据浏览器时区对ES中保存的时间进行转化,以我们东八区为例,会自动将日期减去八小时,因此查询到当前的数据就无法检索到刚插入的数据,要到第二天才可以看。

解决方式

在保存时,直接使用UTC时间
保存时间时指定时区,如2018-01-27T08:07+08:00,注意如果不设定日期的format的话,依赖于ES内置的日期识别,格式必须符合ES预舍的数种格式:
image.png

如我的代码在 push data to es 前,将日期类型指定时区为东八区:

import datetime
data_time = datetime.datetime.fromtimestamp(int(power_value['clock'])).isoformat() + "+0800"

这样在 es 里就会认为是东八区的时间

原文链接:请添加链接描述