如何在 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
我正在使用 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