我有一个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”。
答案 0 :(得分:2)
如果从不同文件中读取需要按顺序处理的数据,则无法执行此操作,因为Logstash不维护有序的事件队列。如果您有多个过滤工作人员(即启动Logstash且-w
/ --filterworkers
大于一),即使您从单个文件中读取,也无法保证订单。
您必须自己写一些东西才能获得正确的订购。也许Apache Samza可能有用。