kibana显示时间数据时的时区问题及时间显示格式设置

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


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


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

文章目录

  • 1. 问题描述
  • 2. 问题重现
    • 2.1 创建索引
    • 2.2 添加数据
    • 2.3 查看数据
  • 3. 解决方法
    • 3.1 创建索引
    • 3.2 添加数据
    • 3.3 查看数据
  • 4. 拓展


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查看,时间与存入的数据一致
kibana显示时间数据时的时区问题及时间显示格式设置_第1张图片


4. 拓展

kibana设置时间显示格式
找到Advanced Settings的位置
新旧版本略有差异,旧版本在Management界面可直接看到Advanced Settings
kibana显示时间数据时的时区问题及时间显示格式设置_第2张图片

新版本则在kibana侧边栏Management-->Stack Management-->kibana-->Advanced Settings
kibana显示时间数据时的时区问题及时间显示格式设置_第3张图片
Advanced Settings界面找到Date formatdateFormat进行设置
这里可以点format来跳转时间格式转换的界面,和Java中的时间定义格式不太一样
我这里可以使用Java相同的格式

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

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


感谢阅读,祝君暴富!

你可能感兴趣的:(ELK,数据库,java,服务器,elk)