logstash维护读取数据的顺序

时间:2015-01-15 00:31:08

标签: logstash

我有一个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”。

1 个答案:

答案 0 :(得分:2)

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

您必须自己写一些东西才能获得正确的订购。也许Apache Samza可能有用。