我正在使用logstash来解析csv文件中的数据并将其推送到elasticsearch。我有一个600k行的字典,它使用其中一个字段作为键将其映射到一串值。我目前正在使用这样的翻译插件来实现我的需要
filter {
translate {
dictionary_path => "somepath"
field => "myfield"
override => false
destination => "destinationField"
}
}
我在destinationField中得到一个逗号分隔的String,我使用
读取filter{
csv {
source => "destinationField"
columns => ["col1","col2","col3"]
separator => ","
}
}
添加这两个块的结果使我的处理时间增加了3倍。如果过去需要1分钟来处理并推送我的所有数据,现在需要3分钟才能完成任务。
这是预期的行为吗(这是一本大字典)?或者有没有办法进一步优化这段代码?
答案 0 :(得分:0)
csv
过滤器可能很昂贵。我编写了一个插件logstash-filter-augment,它与translate
几乎完全相同,但更好地处理了原生CSV文档。您可以使用真实的CSV而不是csv
过滤器来解析字段。