天行健,君子以自强不息;地势坤,君子以厚德载物。


每个人都有惰性,但不断学习是好好生活的根本,共勉!


文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。


1. 问题描述

使用kibana控制台(Dev Tools)新增数据后,时间字段的值并不是自己定义的值,而是在自己定义的时间上加了8个小时。
比如我新增数据时,时间字段的值写的是2023-11-01 15:22:54执行命令后,到kibana的界面查看数据就变成了2023-11-01 23:22:54.000,这里时间大体一致,就是加了8小时,明显的时区问题,至于后面的.000这是跟kibana设置中的默认时间格式有关,拓展中略说以下,先解决时区问题

2. 问题重现

2.1 创建索引

PUT kibana-test-2023.11.01
{
  "settings": {
    "number_of_shards": 2,
    "number_of_replicas": 1
  },
  "mappings": {
    "properties": {
      "name": {"type": "text"},
      "number": {"type": "keyword"},
      "age": {"type": "integer"},
      "date": {
        "type": "date",
        "format": "yyyy-MM-dd HH:mm:ss || yyyy-MM-dd || epoch_millis"
      }
    }
  }
}

2.2 添加数据

可以多来几个

POST kibana-test-2023.11.01/_doc
{
	"name":"武则天",
	"age":12123,
	"number":"00006",
	"date":"2023-11-01 13:27:50"
}

2.3 查看数据

创建index patterndiscover查看数据如下图,时间+8小时
在这里插入图片描述

3. 解决方法

在创建索引时,将时区也定义其中,然后添加数据时,将时区的差值填上,即在format的时间格式中加入Z参数,表示时区参数

3.1 创建索引

PUT kibana-test-2023.11.02
{
  "settings": {
    "number_of_shards": 2,
    "number_of_replicas": 1
  },
  "mappings": {
    "properties": {
      "name": {"type": "text"},
      "number": {"type": "keyword"},
      "age": {"type": "integer"},
      "date": {
        "type": "date",
        "format": "yyyy-MM-dd HH:mm:ss Z"
      }
    }
  }
}

3.2 添加数据

在时间字段的值中加入时区信息+0800表示中国时区

POST kibana-test-2023.11.02/_doc
{
	"name":"李元芳",
	"age":10086,
	"number":"00001",
	"date":"2023-11-01 10:07:40 +0800"
}
POST kibana-test-2023.11.02/_doc
{
	"name":"狄仁杰",
	"age":12315,
	"number":"00002",
	"date":"2023-11-01 10:35:40 +0800"
}
POST kibana-test-2023.11.02/_doc
{
	"name":"百里守约",
	"age":10000,
	"number":"00003",
	"date":"2023-11-01 10:44:40 +0800"
}
POST kibana-test-2023.11.02/_doc
{
	"name":"孙悟空",
	"age":10010,
	"number":"00004",
	"date":"2023-11-01 11:07:40 +0800"
}
POST kibana-test-2023.11.02/_doc
{
	"name":"孙尚香",
	"age":12345,
	"number":"00005",
	"date":"2023-11-01 12:07:45 +0800"
}

3.3 查看数据

创建index pattern后到discover查看,时间与存入的数据一致
在这里插入图片描述


4. 拓展

kibana设置时间显示格式
找到Advanced Settings的位置
新旧版本略有差异,旧版本在Management界面可直接看到Advanced Settings
在这里插入图片描述

新版本则在kibana侧边栏Management-->Stack Management-->kibana-->Advanced Settings
在这里插入图片描述
Advanced Settings界面找到Date formatdateFormat进行设置
这里可以点format来跳转时间格式转换的界面,和Java中的时间定义格式不太一样
我这里可以使用Java相同的格式

YYYY-MM-DD HH:mm:ss.SSS

在这里插入图片描述
这里定义后,在kibana中显示时就会按照转换格式来显示存入的数据,如discover中产看的时间数据格式就是根据这里显示的


感谢阅读,祝君暴富!

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐