这里有一个实时系统,可以将文本消息传输到共享文件夹。还有一个 filebeat ,可以将这些消息导航到 logstash ,然后logstash解析它们并输出到 elasticsearch 即可。问题是放在共享文件夹中的某些消息的内容是错误的,并且在一段时间后将发送正确的表单,有时正确的表单会更快地出现错误的表单。每个msg都有一个名为counter的字段,错误的msg计数器小于正确的msg。
每次logstash收到新消息时,是否可以根据document_id查询/搜索elasticsearch的记录,并检查弹性搜索中是否已存在正确的msg或当前的msg是否正确,应该用旧的替换一。
请注意,要访问每条消息,都会使用已定义的document_id,并且对于两条纠正/错误消息都可以是相同的。 document_id如下所示:
output {
elasticsearch {
document_id => "%{my_id}"
.
.
.
}
}
答案 0 :(得分:0)
是的,您可以使用elasticsearch
logstash filter,这样您就可以获得与您的查询相匹配的一个文档。在您的情况下,您可以查询ID并获得文档:
filter {
elasticsearch {
hosts => ["localhost:9200"]
query => "_id:%{my_id}"
fields => {
"field1" => "fieldA"
"field2" => "fieldB"
}
}
}
执行此过滤器后,您将field1
和field2
作为fieldA
和fieldB
复制到当前事件中,您可以运行if / then / else tests在你认为合适的事件上。