我正在使用elasticsearch 5.x和Filebeat,想知道是否有一种直接在filebeat中解析日期(时间戳)的方法(不想使用logstash)。我正在使用json.keys_under_root: true
并且效果很好,但问题是时间戳(在我们身上)被识别为字符串。所有其他字段都被自动识别为正确的类型,只有这一个不是。
如何将其映射为日期?
答案 0 :(得分:4)
您可以将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