logstash - 仅添加第一次值

logstash - add only first time value

我要的就是这个,和增量数据有点相反

一些数据是带有特定令牌的日志,我希望能够仅保留(或在 Elasticsearch 中显示)第一个提交的数据,即每个令牌的最旧信息。

我想忽略任何具有相同标记的新日志?

我该怎么做?它是在 logstash 还是 elasticsearch 中?

谢谢

更新 2016-05-31

我认为我们可以从不同的角度看待这一点。但在全球范围内,我想要的是图片中的 table ,但没有红线,我希望它们被 logstash 忽略,或者不显示在 ES 查询中。

我知道这是可以做到的,如果我能够在我想删除的那些行中添加任何标志,但这是不可能的,告诉我们可以删除它们的唯一事实是因为我们已经有了一个密钥first-AAA 之前记录过的。 在记录过程中,我们没有这些信息。

您可以使用 elasticsearch filter 实现此目的。如果记录已经存在,过滤器将在 ES 中检查,如果是这种情况,我们要求 Logstash 删除该行。

请注意,我假设 Id 字段 (AAA) 用作文档 _id 并且在文档中也作为 [=12] =] 字段。随意更改任何需要的内容,但这会起作用。

input {
   ...
}
filter {
   elasticsearch {
      hosts => ["localhost:9200"]
      query => "_type:your_type AND _id:%{[Id]}"
      fields => {"Id" => "found"}
   }
   if [found] {
      drop {}
   }
}
output {
   elasticsearch {
      hosts => ["localhost:9200"]
      ...
   }
}