当前位置: 首页 > news >正文

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

文章目录

  • 问题描述
  • 解决思路
    • 修改kibana时区设置
    • 修改索引结构

问题描述

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

image-20250402143318073

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

image-20250402143509989

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

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

image-20250403162423064

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

解决思路

修改kibana时区设置

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

image-20250403162903955

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

image-20250403163036500

修改索引结构

之前配置的写入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 这样的格式:

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

测试如下:

image-20250403164752724

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

image-20250403164834362

可以看到,已经解决了问题,而且推荐使用这样的方式,因为写入的时候就指定了时区+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 即可。

image-20250403170716520

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

image-20250403170744562

相关文章:

  • map和set的使用
  • 24统计建模国奖论文写作框架2(机器学习+自然语言处理类)(附原文《高校负面舆情成因与演化路径研究》)
  • Vue 3 中 v-if 完全指南!!!
  • LeetCode 解题思路 32(Hot 100)
  • C语言查漏补缺:基础篇
  • 稳定的Android studio版本安装教程
  • Android获取后台应用的快照
  • Linux:页表详解(虚拟地址到物理地址转换过程)
  • qt主题方案使用
  • Vue 3 自定义权限指令 v-action
  • 【数据集】 PBMC(Peripheral Blood Mononuclear Cells)数据集
  • USC安防平台XBOX云台控制
  • 小程序的外观—WXSS
  • Python星球日记 - 第7天:字典与集合
  • 2025高频面试算法总结篇【排序】
  • 【蓝桥杯】算法笔记5
  • 【Metasploit】Metasploit安装及使用教程(非常详细)从零基础入门到精通,看完这一篇就够了。
  • 脑影像分析软件推荐 | NBS-Predict:基于脑网络的机器学习预测工具包
  • 蓝桥杯备赛 Day 19 加练dfs
  • 情感语音的“开源先锋”!网易开源
  • 明星做代言的购物网站0/鸿星尔克网络营销
  • ps怎么做网站图片/建站公司哪家好
  • 中山市做网站的公司/互动营销公司
  • 南通网站建设推广/网络营销模式包括哪些
  • 局政府网站建设管理制度/关键词优化推广
  • 济宁城乡建设委员会的网站/seo关键词怎么选