概念

 

filters/mutate 插件是 Logstash 另一个重要插件。它提供了丰富的基础类型数据处理能力。包括类型转换,字符串处理和字段处理等。

 

Plugin version: v3.5.0

执行顺序


coerce rename update replace convert gsub uppercase capitalize lowercase strip remove split join merge copy


也可以指定多个 mutate块来改变执行顺序

filter {
mutate {
split => ["hostname", "."]
add_field => { "shortHostname" => "%{hostname[0]}" }
}

mutate {
rename => ["shortHostname", "hostname" ]
}
}

 

示例

1、转变参数类型 convert


mutate {
convert => {
"name" => "string"
"age" => "integer"
"state" => "boolean"
}
}


2、复制字段 copy
复制一个已存在的字段到另外一个字段,已存在的字段会被重写到一个新的字段,新的字段不需要单独添加


mutate {
copy => { "source_field" => "dest_field" }
}


3、正则表达式替换 gsub
这里只针对string类型字段


mutate {
gsub => [
#把name字段中的“a”替换为“p”
"name","a","p"
#斜线都替换成下划线
"fieldname", "/", "_",
#正则替换
"fieldname2", "[\\?#-]", "."
]
}


4、大小写转换 lowercase&uppercase


mutate {
#lowercase => [ "name" ]
uppercase => [ "name" ]
}


5、字段重命名 rename


mutate {
rename => {"name" => "name3"}
}


6、除去字段值前后空格 strip


mutate {
strip => ["name"]
}


7、更新字段值 update


mutate {
update => {"name" => "li"}
}


8、修改字段 replace
作用和 update 类似,但是当字段不存在的时候,它会起到 add_field 参数一样的效果,自动添加新的字段。
9、移除字段 remove_field


mutate {
remove_field => ["name"]
}


10、增加字段 add_field


mutate {
add_field => {"testField1" => "0"}
add_field => {"testField2" => "%{name}"} #引用name中的值
}


 

其他参考官方文档:

​https://www.elastic.co/guide/en/logstash/current/plugins-filters-mutate.html#plugins-filters-mutate-merge​