有没有办法使用文档ID从logstash查询elasticsearch中的文档

时间:2016-11-01 10:27:47

标签: elasticsearch logstash filebeat

这里有一个实时系统,可以将文本消息传输到共享文件夹。还有一个 filebeat ,可以将这些消息导航到 logstash ,然后logstash解析它们并输出到 elasticsearch 即可。问题是放在共享文件夹中的某些消息的内容是错误的,并且在一段时间后将发送正确的表单,有时正确的表单会更快地出现错误的表单。每个msg都有一个名为counter的字段,错误的msg计数器小于正确的msg。

每次logstash收到新消息时,是否可以根据document_id查询/搜索elasticsearch的记录,并检查弹性搜索中是否已存在正确的msg或当前的msg是否正确,应该用旧的替换一。

请注意,要访问每条消息,都会使用已定义的document_id,并且对于两条纠正/错误消息都可以是相同的。 document_id如下所示:

output {

   elasticsearch {
     document_id => "%{my_id}"
       .
       .
       .
      }
}

1 个答案:

答案 0 :(得分:0)

是的,您可以使用elasticsearch logstash filter,这样您就可以获得与您的查询相匹配的一个文档。在您的情况下,您可以查询ID并获得文档:

filter {
   elasticsearch {
      hosts => ["localhost:9200"]
      query => "_id:%{my_id}"
      fields => { 
         "field1" => "fieldA" 
         "field2" => "fieldB" 
      }
   }
}

执行此过滤器后,您将field1field2作为fieldAfieldB复制到当前事件中,您可以运行if / then / else tests在你认为合适的事件上。