日期处理器

编辑

从字段中解析日期,然后将日期或时间戳用作文档的时间戳。默认情况下,日期处理器会将解析后的日期添加为名为 @timestamp 的新字段。您可以通过设置 target_field 配置参数来指定不同的字段。同一个日期处理器定义支持多种日期格式。它们将按顺序使用,尝试解析日期字段,顺序与它们在处理器定义中定义的顺序相同。

表 11. 日期选项

名称 必需 默认值 描述

field

-

从中获取日期的字段。

target_field

@timestamp

将保存解析后的日期的字段。

formats

-

预期日期格式的数组。可以是 java 时间模式 或以下格式之一:ISO8601、UNIX、UNIX_MS 或 TAI64N。

timezone

UTC

解析日期时使用的时区。支持 模板片段

locale

ENGLISH

解析日期时使用的区域设置,与解析月份名称或星期几相关。支持 模板片段

output_format

yyyy-MM-dd'T'HH:mm:ss.SSSXXX

将日期写入 target_field 时使用的格式。必须是有效的 java 时间模式

description

-

处理器的描述。有助于描述处理器的目的或其配置。

if

-

有条件地执行处理器。请参阅 有条件地运行处理器

ignore_failure

false

忽略处理器的故障。请参阅 处理管道故障

on_failure

-

处理处理器的故障。请参阅 处理管道故障

tag

-

处理器的标识符。有助于调试和指标。

这是一个根据 initial_date 字段将解析后的日期添加到 timestamp 字段的示例

{
  "description" : "...",
  "processors" : [
    {
      "date" : {
        "field" : "initial_date",
        "target_field" : "timestamp",
        "formats" : ["dd/MM/yyyy HH:mm:ss"],
        "timezone" : "Europe/Amsterdam"
      }
    }
  ]
}

timezonelocale 处理器参数是模板化的。这意味着它们的值可以从文档中的字段中提取。以下示例展示了如何从已存在的字段 my_timezonemy_locale 中提取区域设置/时区详细信息,这些字段包含摄入文档中的时区和区域设置值。

{
  "description" : "...",
  "processors" : [
    {
      "date" : {
        "field" : "initial_date",
        "target_field" : "timestamp",
        "formats" : ["ISO8601"],
        "timezone" : "{{{my_timezone}}}",
        "locale" : "{{{my_locale}}}"
      }
    }
  ]
}

文本日期格式接受的文本字符串,以及周日期的计算,取决于 Elasticsearch 运行的 JDK 版本。有关更多信息,请参阅 自定义日期格式