关于ES和Kibana中时区问题

本文探讨了ES中日期时间以0时区存储,Kibana在展示时转换为本地时区导致的时间偏差问题。当日志中的日期时间值不带时区信息,例如,会被错误地转换并显示为晚8小时。解决方法是在原始数据中包含时区信息,通过Logstash添加时区字段,并调整映射(mappings)以确保正确处理时区转换。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ES中:

日期时间字段在json中以字符串形式存在,但是在es中有专门的date类型来表示日期时间,并且,es中是以0时区来存储date类型的值。

这就引出了一个问题:
如果原始内容中的日期时间字段有时区信息,那么es会将其转换为0时区并转换为时间戳以long类型存储在es中;
如果原始内容日期时间字段没有时区信息的话,例如2018-10-30 11:10:45,那么es会将其视为0时区的时间,即实际在es中存储为2018-10-30 11:10:45 +0000的时刻。

kibana中

kibana从es中获取到date类型的字段后,会通过js获取本机/本地时区,并将时间字段从es的0时区转换为本地时区之后展示出来。

所以遇到的问题如下:

比如日志中日期时间值为2018-10-30 11:10:45,然后自定义mapping为

                "accountTime": {
                    "type": "date",
                    "format" : "yyyy-MM-dd HH:mm:ss"
                },

那么我们日志中东8区的时间2018-10-30 11:10:45在es中会存储为2018-10-30 11:10:45 +0000的时间戳,然后kibana读取的时候再做一次转换,在kibana中该时刻就变成了2018-10-3

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值