更改logstash中的动态字段值

eoigrqb6  于 2022-12-16  发布在  Logstash
关注(0)|答案(2)|浏览(277)

我在logstash中使用了一个过滤器。我想更改logstash中一个动态字段的值。我在过滤器中使用了以下代码:

if [state_ls_keyvalue] == "False" {
            
    mutate{
        add_field => {"%{field_ls_keyvalue}" => "%{enrich_column}"}
    }

} else {
     mutate{
       remove_field => ["%{field_ls_keyvalue}"]
     }

     mutate{
       add_field => {"%{field_ls_keyvalue}" => "%{enrich_column}"}
     }
}

但是不行,我该怎么办?

v1uwarro

v1uwarro1#

remove_field和add_field都打印字段名。

output { stdout { codec => rubydebug { metadata => false } } }
input { generator { count => 1 lines => [ '{ "field_ls_keyvalue": "a", "a": "c", "enrich_column": "d" }' ] codec => json { } } }
filter {
    mutate { remove_field => [ "%{field_ls_keyvalue}" ] }
    mutate { add_field => { "%{field_ls_keyvalue}" => "%{enrich_column}" } }
}

将产生

"a" => "d",

如果你没有遇到这种情况,那么它就意味着[validation]的条件测试评估为false。

vmpqdwk3

vmpqdwk32#

这个问题与ElasticSearch中域***的***类型有关,我们可以用***Map***来处理,并改变它。
仅使用add_field,将新字段的值追加到旧字段中。
使用remove_field,然后使用add_field,将新字段的值替换为旧字段的值。

相关问题