go-zero使用elasticsearch踩坑记:时间存储和展示问题

文章目录

问题描述

《go-zero中使用elasticsearch的示例》 这篇文章中演示了通过go写入ES的示例,但是里面存在一个细节问题,就是写入的时间和ES展示的时间相差8小时的问题。比如下面这样,我写入ES的时候,时间是当前时间2025-04-02 14:32:00

然后,进去到kibana页面查看数据的时候,会发现时间超前了8个小时,结果是Apr 2, 2025 @ 22:32:00.000

导致这个问题的原因是时区设置的问题。由于写入到ES的时候没有特别设置具体的时区,ES会当成UTC时间处理,也就是认为写入的时间是UTC的2025-04-02 14:32:00,然而北京时间比UTC时间晚8个小时,那么,可以推测kibana页面上看到的应该是北京时间。

接下来验证一下这个推断,进入kibana的设置页面,查看Timezone for date formatting部分,如下:

可以看到显示的是Browser,也就是获取的浏览器所在的时区,就是验证了上面的推测。

解决思路

修改kibana时区设置

可以通过修改上面的 Timezone for date formatting 改为 UTC时间,即可正常显示写入时候的时间:

修改后,再次查看之前写入的数据就显示正常了:

修改索引结构

之前配置的写入ES的索引中,关于时间的部分是 {"type": "date", "format": "yyyy-MM-dd HH:mm:ss"}

复制代码
{
    "mappings": {
        "properties": {
            "menu_id": {"type": "long"},
            "url": {"type": "keyword"},
            "content": {"type": "keyword"},
            "user_id": {"type": "long"},
            "create_time": {"type": "date", "format": "yyyy-MM-dd HH:mm:ss"}
        }
    }
}

上面的"format": "yyyy-MM-dd HH:mm:ss" 是为了写入ES的格式是我们日常习惯的年-月-日 时:分:秒 的格式,现在写入的时候需要去掉这里的format,改为 "create_time": {"type": "date"}

修改后需要删除原来的索引,重新建立索引,或者使用新的索引。这里我改为使用新的索引,写入的时间内容需要改为2025-04-03T16:44:11+08:00 这样的格式:

go 复制代码
// 将当前时间戳转换为 time.Time 类型
timeData := time.Unix(time.Now().Unix(), 0)
// 格式化时间为字符串
timeString := timeData.Local().Format(time.RFC3339)
fmt.Println("timeString", timeString)

测试如下:

接下来,把刚才修改的kibana的Timezone for date formatting 改回默认的Browser,查看kibana页面上的数据:

可以看到,已经解决了问题,而且推荐使用这样的方式,因为写入的时候就指定了时区+08:00,这样将来如果需要展示为其它时区也比较合理。

还有一个细节,就是我想把kibana首列的Apr 3, 2025 @ 16:44:11.000 改为2025-04-03 16:44:11 这样的格式。需要修改刚才的设置里面的

Date format,默认是MMM D, YYYY @ HH:mm:ss.SSS,改为yyyy-MM-DD HH:mm:ss 即可。

修改后,再次查看kibana中的数据:

相关推荐
杂家3 分钟前
Hadoop完全分布式部署(超详细)
大数据·hadoop·分布式
BD_Marathon4 分钟前
【Hadoop】hadoop3.3.1完全分布式配置
大数据·hadoop·分布式
研究司马懿38 分钟前
【ETCD】ETCD——confd配置管理
数据库·golang·自动化·运维开发·etcd·argocd·gitops
Ashlee_code1 小时前
BSS供应商:电信与金融领域的幕后支撑者
大数据·网络·金融·系统架构·跨境·金融机构·场外期权
Acrelhuang4 小时前
覆盖全场景需求:Acrel-1000 变电站综合自动化系统的技术亮点与应用
大数据·网络·人工智能·笔记·物联网
忙碌5444 小时前
智能应用开发指南:深度学习、大数据与微服务的融合之道
大数据·深度学习·微服务
萤丰信息4 小时前
智慧园区系统:开启园区管理与运营的新时代
java·大数据·人工智能·安全·智慧城市·智慧园区
Q26433650235 小时前
【有源码】基于Hadoop+Spark的起点小说网大数据可视化分析系统-基于Python大数据生态的网络文学数据挖掘与可视化系统
大数据·hadoop·python·信息可视化·数据分析·spark·毕业设计
洞见新研社5 小时前
家庭机器人,从科幻到日常的二十年突围战
大数据·人工智能·机器人
筑梦之人6 小时前
Spark-3.5.7文档2 - RDD 编程指南
大数据·分布式·spark