logstash维护读取数据的顺序

logstash maintaining the order in which data is read

我有一个 logstash 实例并从多个文件读取数据。我想维护 Elasticsearch 中数据更新的顺序,因为 _id 字段是关键。

因此如果输入文件中有两条记录具有相同的键,则必须按顺序更新。

如何在 logstash 中强制从源排序?

Input file 1:
Key = A1 , Data = abc , time=5:51 PM
Key = B1 , Data = efg , time=5:52 PM
Key = C1 , Data = hij , time=5:53 PM

Input file 2:
Key = A1 , Data = klm, time=5:50 PM

这将由 logstash 中的两个线程读取。

如果有两个过滤器线程格式化数据。

输出使用 _id 进行弹性搜索:

output {
  elasticsearch {
   embedded => true
   index => "samples6"
   index_type => "sample"
   document_id => "%{Key}"
 }    
}

如何确保 Key=A1 有 Data=abc 而不是 "klm"。

如果需要按顺序处理的数据是从不同的文件中读取的,则无法执行此操作,因为 Logstash 不维护有序的事件队列。如果您有多个过滤器工作人员(即以 -w/--filterworkers 大于一个启动 Logstash),即使您从单个文件读取也无法保证顺序。

您必须自己编写一些内容才能正确排序。也许 Apache Samza 会有用。