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

Is there a way to query a document in elasticsearch from logstash using document id

这里有一个实时系统,可以将短信传输到共享文件夹。还有一个 filebeat 将这些消息导航到 logstash,然后 logstash 解析它们并输出到 elasticsearch。问题是放在共享文件夹中的一些消息的内容是错误的,正确的形式会在一段时间后发送,有时正确的形式比错误的形式来得更快。每条消息都有一个称为计数器的字段,错误的消息计数器小于正确的计数器。

是否可以在logstash每次收到新消息时根据document_id记录elasticsearch的query/search并检查elasticsearch中是否已经存在正确的msg或者当前的msg是正确,应更换为旧的。

请注意,要访问每条消息,使用定义的 document_id 并且两个 correcnt/wrong 消息可以相同。 document_id 如下所示:

output {

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

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

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

此过滤器执行后,您会将 field1field2 作为 fieldAfieldB 复制到当前事件中,您可以 运行 if/then/else 测试您认为合适的活动。