mutate插件可以对事件中的数据进行修改,包括rename、update、replace、convert、split、gsub、uppercase、lowercase、strip、remove_field、join、merge等功能。
对于已经存在的字段,重命名其字段名称。
filter { mutate { rename => ["syslog_host", "host"] } }更新字段内容,如果字段不存在,不会新建
filter { mutate { update => { "sample" => "My new message" } } }与 update 功能相同,区别在于如果字段不存在则会新建字段
filter { mutate { replace => { "message" => "%{source_host}: My new message" } } }数据类型转换。
filter { mutate { convert => ["request_time", "float"] } }gsub 提供了通过正则表达式实现文本替换的功能。
filter { mutate { gsub => [ # replace all forward slashes with underscore "fieldname", "/", "_", # replace backslashes, question marks, hashes, and minuses # with a dot "." "fieldname2", "[\\?#-]", "." ] } }大小写转换
filter { mutate { uppercase => [ "fieldname" ] } }将提取到的某个字段按照某个字符分割
filter { mutate { split => ["message", "|"] } } #针对字符串 "123|321|adfd|dfjld*=123",可以看到输出结果: { "message" => [ [0] "123", [1] "321", [2] "adfd", [3] "dfjld*=123" ], "@version" => "1", "@timestamp" => "2014-08-20T15:58:23.120Z", "host" => "raochenlindeMacBook-Air.local" }类似 trim,只去除首尾的空白字符
filter { mutate { strip => ["field1", "field2"] } }将类型为 array 的字段中的 array 元素使用指定字符为分隔符聚合成一个字符串。 如我们可以将 split 分割的结果再重新聚合起来:
filter { mutate { split => ["message", "|"] } mutate { join => ["message", ","] } } #输出结果: { "message" => "123,321,adfd,dfjld*=123", "@version" => "1", "@timestamp" => "2014-08-20T16:01:33.972Z", "host" => "raochenlindeMacBook-Air.local" }对于几个类型为 array 或 hash 或 string 的字段,我们可以使用 merge 合并
filter { mutate { merge => [ "dest_field", "added_field" ] } } # 需要注意的是,array 和 hash 两个字段是不能 merge 的转载自:
链接:https://www.jianshu.com/p/f47bf814e032 来源:简书 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。