0

我正在使用 logstash 解析 csv 文件中的数据并将其推送到 elasticsearch。我有一个包含 600k 行的字典,它使用其中一个字段作为键将其映射到一串值。我目前正在使用这样的翻译插件来实现我所需要的

filter {
        translate {
            dictionary_path => "somepath"
            field => "myfield"
            override => false
            destination => "destinationField"
        }
    }

我在我的destinationField中得到一个逗号分隔的字符串,我使用

filter{
    csv {
        source => "destinationField"
        columns => ["col1","col2","col3"]            
        separator => ","
      }

}

添加这 2 个块的结果使我的处理时间增加了 3 倍。如果过去需要 1 分钟来处理和推送我的所有数据,现在需要 3 分钟才能完成任务。

这是预期的行为(这是一本大字典)吗?或者有什么办法可以进一步优化这段代码?

4

1 回答 1

1

过滤器csv可能很昂贵。我编写了一个插件logstash-filter-augment,它的工作原理几乎与原生 CSV 文档相同,translate但可以更好地处理原生 CSV 文档。您可以使用真正的 CSV 而不是csv过滤器来解析字段。

于 2017-02-09T16:17:35.623 回答