如何改变 Logstash 中字段的所有值
How to mutate all value of a field in Logstash
我创建了一个脚本,使用 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"
}
}
您可以使用 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
中获得值 company-anything
。
不需要删除 @metadata.company
字段,因为 @metadata
对象不会成为输出消息的一部分。
我创建了一个脚本,使用 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"
}
}
您可以使用 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
中获得值 company-anything
。
不需要删除 @metadata.company
字段,因为 @metadata
对象不会成为输出消息的一部分。