首页 > 解决方案 > Logstash 将“yyyy-MM-dd”转换为“yyyy-MM-dd'T'HH:mm:ss.SSSZ”

问题描述

我使用 logstash-input-jdbc 插件将我的数据从 mysql 同步到 elasiticsearch。但是,在elasticsearch中查看数据时,发现所有日期类型的字段格式都从“yyyy-MM-dd”变成了“yyyy-MM-dd'T'HH:mm:ss.SSSZ” .我有近200个类型为日期的字段,所以我想知道如何配置logstash,以便它可以输出格式“yyyy-MM-dd”而不是“yyyy-MM-dd'T'HH:mm:ss .SSSZ”。

标签: logstashlogstash-configurationlogstash-jdbc

解决方案


Elasticsearch 将日期存储为 UTC 时间戳:

在内部,日期被转换为 UTC(如果指定了时区)并存储为一个长数,表示自时代以来的毫秒数。

日期查询在内部转换为对此长表示的范围查询,聚合和存储字段的结果根据与字段关联的日期格式转换回字符串。

因此,如果您想保留 yyyy-MM-dd 格式,则必须将其存储为 a keyword(然后您将无法对其进行范围查询)。

您可以将 Kibana 的显示更改为仅显示 yyyy-MM-dd 格式,但请注意,它会将日期转换为查看器的时区,这可能会导致与您在输入字段中输入的日期不同。

如果要将日期提取为字符串,则需要为相关索引创建映射以防止默认日期处理。


推荐阅读