Logstash 的使用之 Filter (Mutate)

文章目录

      • 1、rename
      • 2、update
      • 3、replace
      • 4、convert
      • 5、gsub
      • 6、uppercase/lowercase
      • 7、split
      • 8、strip
      • 9、remove_field
      • 10、join
      • 11、merge

mutate插件可以对事件中的数据进行修改,包括rename、update、replace、convert、split、gsub、uppercase、lowercase、strip、remove_field、join、merge等功能。

1、rename

对于已经存在的字段,重命名其字段名称。

filter {
     
    mutate {
     
        rename => ["syslog_host", "host"]
    }
}

2、update

更新字段内容,如果字段不存在,不会新建

filter {
     
    mutate {
     
        update => {
      "sample" => "My new message" }
    }
}

3、replace

与 update 功能相同,区别在于如果字段不存在则会新建字段

filter {
     
    mutate {
     
        replace => {
      "message" => "%{source_host}: My new message" }
    }
}

4、convert

数据类型转换。

filter {
     
    mutate {
     
        convert => ["request_time", "float"]
    }
}

5、gsub

gsub 提供了通过正则表达式实现文本替换的功能。

filter {
     
    mutate {
     
        gsub => [
            # replace all forward slashes with underscore
            "fieldname", "/", "_",
            # replace backslashes, question marks, hashes, and minuses
            # with a dot "."
            "fieldname2", "[\\?#-]", "."
        ]
    }
}

6、uppercase/lowercase

大小写转换

filter {
     
    mutate {
     
        uppercase => [ "fieldname" ]
    }
}

7、split

将提取到的某个字段按照某个字符分割

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"
}

8、strip

类似 trim,只去除首尾的空白字符

filter {
     
    mutate {
     
        strip => ["field1", "field2"]
    }
}

9、remove_field

# 删除字段:

filter {
     
    mutate {
     
        remove_field => [ "foo_%{somefield}" ]
    }
}

10、join

将类型为 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"
}

11、merge

对于几个类型为 array 或 hash 或 string 的字段,我们可以使用 merge 合并

filter {
     
    mutate {
     
        merge => [ "dest_field", "added_field" ]
    }
}
# 需要注意的是,array 和 hash 两个字段是不能 merge 的

转载自:

链接:https://www.jianshu.com/p/f47bf814e032
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

你可能感兴趣的:(#,elstaic,stack,logstash)