如何在 elasticsearch 5.x 和 Filebeat 中解析日期

How to parse date in elasticsearch 5.x and Filebeat

我正在使用 elasticsearch 5.x 和 Filebeat,想知道是否有直接在 filebeat 中解析日期(时间戳)的方法(不想使用 logstash)。我正在使用 json.keys_under_root: true 并且效果很好,但问题是时间戳(在我们身上)被识别为字符串。所有其他字段都被自动识别为正确类型,只有这个不是。

如何将其映射为日期?

您可以将 Filebeat 与 ES Ingest Node 功能一起使用来解析您的 timestamp 字段并将该值应用于 @timestamp 字段。

您将在 Elasticsearch 中设置一个简单的管道,将 date 应用于传入事件。

PUT _ingest/pipeline/my-pipeline
{
  "description" : "parse timestamp and update @timestamp",
  "processors" : [
    {
      "date" : {
        "field" : "timestamp",
        "target_field" : "@timestamp"
      }
    },
    {
      "remove": {
        "field": "timestamp"
      }
    }
  ],
  "on_failure": [
    {
      "set": {
        "field": "error.message",
        "value": "{{ _ingest.on_failure_message }}"
      }
    }
  ]
}

然后在 Filebeat configure elasticsearch 输出中将数据推送到您的新管道。

output.elasticsearch:
  hosts: ["http://localhost:9200"]
  pipeline: my-pipeline