【问题标题】:Logstash convert the "yyyy-MM-dd" to "yyyy-MM-dd'T'HH:mm:ss.SSSZ"Logstash 将“yyyy-MM-dd”转换为“yyyy-MM-dd'T'HH:mm:ss.SSSZ”
【发布时间】:2019-01-07 12:53:14
【问题描述】:

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

【问题讨论】:

    标签: logstash logstash-configuration logstash-jdbc


    【解决方案1】:

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

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

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

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

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

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

    【讨论】:

    • 我已经将这些字段作为关键字存储在es中,但它仍然显示'yyyy-MM-dd'T'HH:mm:ss.SSSZ'格式
    • 您需要查看索引的映射并确保它存储为关键字(在开发人员工具中获取 /index/_mapping)。此外,如果您更改了映射,则需要刷新 kibana 中的索引以使其了解它已更改
    猜你喜欢
    • 2013-03-21
    • 2016-06-21
    • 1970-01-01
    • 1970-01-01
    • 2023-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多