ELK 系列六、logstash 的mutate过滤器功能介绍
因为我在做相关elk项目的时候用的还是6.5版本,所以该文档就以6.5进行介绍,首先先了解下mutate是做什么的,该插件是集成至logstash过滤数据用的,在把数据写入到es之前进行简单的数据清洗和数据格式化。
mutate具有以下几个函数(sql用惯了)吧
序号 | 函数名 | 输入类型 | 备注 |
1 |
convert
|
hash | 和关系型数据库的convert比较类似,都是做类型转换的,能转换的类型如下:integer、integer_eu、float、float_eu、string、boolean |
2 |
copy
|
hash |
将现有字段复制到另一个字段。将覆盖现有目标字段。 |
3 |
gsub
|
array | ? |
4 |
join
|
hash | ? |
5 |
lowercase
|
array | ? |
6 |
merge
|
hash | ? |
7 |
coerce
|
hash | ? |
8 |
rename
|
hash | ? |
9 |
replace
|
hash | ? |
10 |
split
|
hash |
使用分隔符将字段拆分为数组。仅适用于字符串字段。 |
11 |
strip
|
array | ? |
12 |
update
|
hash | ? |
13 |
uppercase
|
array | ? |
14 |
capitalize
|
array | ? |
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
1、
convert
- 值类型是 哈希值
- 此设置没有默认值。
将字段的值转换为其他类型,例如将字符串转换为整数。如果字段值是数组,则将转换所有成员。如果该字段是哈希,则不会采取任何操作。
有效的转换目标及其对不同输入的预期行为是:
-
integer
:-
字符串被解析;?支持逗号分隔符(例如,字符串
"1,000"
生成一个值为1000的整数);?当字符串有小数部分时,它们会被 截断 。 -
浮点数和小数被
截断
(例如,
3.99
变为3
,-2.7
变为-2
) -
布尔真和布尔假被转换为
1
和0
分别
-
字符串被解析;?支持逗号分隔符(例如,字符串
-
integer_eu
:-
相同
integer
,除了字符串值支持点分隔符和逗号小数(例如,"1.000"
生成一个值为1000的整数)
-
相同
-
float
:- 整数转换为浮点数
-
字符串被解析;?支持逗号分隔符和点小数(例如,
"1,000.5"
生成一个值为一千零一半的整数) -
布尔真和布尔假被转换为
1.0
和0.0
分别
-
float_eu
:-
相同
float
,除了字符串值支持点分隔符和逗号小数(例如,"1.000,5"
生成一个值为一千零一半的整数)
-
相同
-
string
:- 所有值都使用UTF-8进行字符串化和编码
-
boolean
:-
串
"true"
,"t"
,"yes"
,"y"
,和"1"
被转换成布尔true
-
串
"false"
,"f"
,"no"
,"n"
,和"0"
被转换成布尔false
-
空字符串转换为布尔值?
false
- 所有其他值在没有转换的情况下直接传递并记录警告消息
-
串
例子:?
filter { mutate { convert => { "fieldname" => "integer" "booleanfield" => "boolean" } } }
?
2.
copy
- 值类型是 哈希值
- 此设置没有默认值。
将现有字段复制到另一个字段。将覆盖现有目标字段。
例:
filter { mutate { copy => { "source_field" => "dest_field" } } }
?
10.
split
- 值类型是 哈希值
- 此设置没有默认值。
使用分隔符将字段拆分为数组。仅适用于字符串字段。
例:
filter { mutate { split => { "fieldname" => "," } } }
?
就先写到这里,后续会继续更新。。