因为我在做相关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
    • 布尔真和布尔假被转换为 10 分别
  • integer_eu

    • 相同 integer ,除了字符串值支持点分隔符和逗号小数(例如, "1.000" 生成一个值为1000的整数)
  • float

    • 整数转换为浮点数
    • 字符串被解析;?支持逗号分隔符和点小数(例如, "1,000.5" 生成一个值为一千零一半的整数)
    • 布尔真和布尔假被转换为 1.00.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" => "," }
  }
}

?

就先写到这里,后续会继续更新。。

参考资料: https://www.elastic.co/guide/en/logstash/6.5/plugins-filters-mutate.html#plugins-filters-mutate-convert

相关文章