Kibana discover如何显示符合要求的时间格式

mac2024-03-24  28

1.需求说明

索引中有两个字段 @timestamp 和 message_date, 希望 @timestamp 显示的时间格式为:YYYY-MM-DDTHH:mm:ss.SSSZ, message_date 显示的格式为YYYY-MM-DD

2.实现

2.1 通过elasticsearch mapping 来实现

mapping 中定义 format 为 date_optional_time

PUT _template/test { "index_patterns" : ["test-*"], "order": 9, "settings" : { "number_of_shards" : 1, "number_of_replicas" : 1, "index.refresh_interval" : "30s", "index.max_result_window" : "10000" }, "mappings" : { "doc" : { "properties": { "@timestamp": { "type": "date", "format": "date_optional_time||epoch_millis"}, "message_date": { "type": "date", "format": "date_optional_time||epoch_millis"} } } } }

2.2 测试

PUT test-1/doc/1 { "@timestamp":"2019-10-30T23:03:17.886", "message_date":"2020-11-04", }

2.3 查看 显示结果

Discover 显示的message_date 是 2020-11-04 00:00:00.000, 不符合要求

3.解决问题

Kibana Management->advance setting Date Format 能控制 所有date 类型的 显示格式,但是 我们的 message_date 和 @timestamp 有差异, 不满组要求 Management->Index Pattern 在Index Pattern 中找到 对应的index pattern, 修改 某些特定 field 的 Moment.js format pattern; 比如 需要 把@timestamp 修改为 YYYY-MM-DDTHH:mm:ss.SSSZ 即可 可参考官网field-formatters-date

4.最终输出

最新回复(0)