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