我可以在 Logstash 中创建一个单项数组吗?
Can I create a one-item array in Logstash?
我有一个用例,其中字符串字段有时包含一个值,有时包含多个值。这会导致下游出现问题,因为我们的 avro 模式在此字段上指定类型“Array”,但有时会收到“String”类型。
我无法更改下游逻辑,作为解决方法,我宁愿避免将我的数组转换为串联字符串。有没有办法在 Logstash 中创建单项数组?
研究
Logstash 中有一个 convert filter,但它没有明确允许转换为字符串数组,以下内容不起作用:
mutate {
convert => {"FieldName" => "[string]"}
}
我也曾尝试过将字段显式地重新创建为数组,但没有成功。
mutate {
add_field => { "[FieldName_temp]" => "%{FieldName}" }
remove_field => { "FieldName" }
}
mutate {
rename => { "[FieldName_temp]" => "[FieldName]" }
}
我正在尝试的东西在 Logstash 中是否可行?
公共过滤器选项add_field如果该字段已经存在,会将字符串转换为数组,或者将条目附加到数组,然后您可以删除数组中的最后一个条目。
mutate { add_field => { "foo" => 2 } }
mutate { remove_field => [ "[foo][-1]" ] }
您也可以使用 ruby 过滤器来完成,但我认为这更难理解:
ruby { code => 'event.set("foo", [ event.get("foo") ].flatten)' }
我有一个用例,其中字符串字段有时包含一个值,有时包含多个值。这会导致下游出现问题,因为我们的 avro 模式在此字段上指定类型“Array”,但有时会收到“String”类型。
我无法更改下游逻辑,作为解决方法,我宁愿避免将我的数组转换为串联字符串。有没有办法在 Logstash 中创建单项数组?
研究
Logstash 中有一个 convert filter,但它没有明确允许转换为字符串数组,以下内容不起作用:
mutate {
convert => {"FieldName" => "[string]"}
}
我也曾尝试过将字段显式地重新创建为数组,但没有成功。
mutate {
add_field => { "[FieldName_temp]" => "%{FieldName}" }
remove_field => { "FieldName" }
}
mutate {
rename => { "[FieldName_temp]" => "[FieldName]" }
}
我正在尝试的东西在 Logstash 中是否可行?
公共过滤器选项add_field如果该字段已经存在,会将字符串转换为数组,或者将条目附加到数组,然后您可以删除数组中的最后一个条目。
mutate { add_field => { "foo" => 2 } }
mutate { remove_field => [ "[foo][-1]" ] }
您也可以使用 ruby 过滤器来完成,但我认为这更难理解:
ruby { code => 'event.set("foo", [ event.get("foo") ].flatten)' }