【发布时间】:2017-08-23 14:09:17
【问题描述】:
我遇到了一个问题,我的日志数据和工作流程似乎与 Elasticsearch 输出批量插入的方式发生冲突。
我正在尝试做的是使用 Elasticsearch 过滤器插件进行查找以在我收到结束事件时找到开始事件。然而,问题在于这些事件通常彼此相邻或非常接近(在几行之内)。当执行 Elasticsearch 过滤器查找时,它不会找到相应的开始事件,因为它尚未发送到 Elasticsearch,因为输出批量插入的方式。
供参考,工作流程如下:
input {
beats {
port => 5044
}
}
filter {
if [eventType] == "End" {
elasticsearch {
hosts => ["localhost:9200"]
user => "logstash-es"
password => "****"
index => "logstash-*"
query_template => "config/logstash-query.json"
fields => [["event-data", "start-event-data"]]
}
}
}
output {
elasticsearch {
hosts => "[localhost:9200]"
user => "logstash-es"
password => "****"
index => "%{[@metadata][beat]}"
document_type => "%{[@metadata][type]}"
}
}
如何强制 Elasticsearch 输出单独发送事件,以便 Elasticsearch 过滤器查找成功?
【问题讨论】: