Logstash将“ yyyy-MM-dd”转换为“ yyyy-MM-dd'T'HH:mm:ss.SSSZ”

时间:2019-01-07 12:53:15

标签: logstash logstash-configuration logstash-jdbc

我使用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”。

1 个答案:

答案 0 :(得分:0)

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

  

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

     

将日期查询在内部转换为这种长表示形式的范围查询,并且聚合和存储的字段的结果将转换为字符串,具体取决于与该字段关联的日期格式。

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

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

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