我创建了一个脚本,通过使用Logstash及其插件将Elasticsearch数据导出到csv文件。我想改变一个字段的值。例如,我导出了一个字段company,这个字段的值是:google, amazon...,我需要在csv文件中的这些值之前添加一个字符串company-,比如:company-google, company-amazon。我检查了Logstash的Mutate filter plugin,但是我没有找到任何函数来解决这个problem.Is --可以用Logstash修改这些值并导出到csv文件中吗?
input {
elasticsearch {
hosts => "localhost:9200"
index => "give_index_name"
query => '
{
"query": {
"match_all": {}
}
}
'
}
}
output {
csv {
# elastic field name
fields => ["company", "field2", "field3", "field4", "field5"]
# This is path where we store output.
path => "/scrape/csv-export.csv"
}
}发布于 2021-06-19 01:31:31
您可以使用mutate过滤器来完成这一任务。
首先,您需要创建一个临时的新字段,将字符串company-与字段company的值连接起来。
您可以使用下面的mutate过滤器执行此操作。
mutate {
add_field => {"[@metadata][company]" => "company-%{company}" }
remove_field => ["company"]
}这将创建一个名为@metadata.company的字段,其值为company-CompanyName,例如。company-anything,然后它将删除company字段。
接下来,您需要再次添加一个名为company的字段,该字段的值为@metadata.company字段。
这是使用以下mutate完成的
mutate {
add_field => { "company" => "%{[@metadata][company]}" }
}这样,您将在字段中获得company-anything值company。
不需要删除@metadata.company字段,因为@metadata对象不会是输出消息的一部分。
https://stackoverflow.com/questions/68033698
复制相似问题