日期处理器编辑

从字段中解析日期,然后使用日期或时间戳作为文档的时间戳。默认情况下,日期处理器会将解析后的日期添加为一个名为 @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}}}"
      }
    }
  ]
}