添加一个复制字段并将其设置为小写

Adding a copy field and set it lowercase

我在使用 mutate 过滤器时遇到问题,我需要将字段副本设置为小写。 但是当我尝试在 elastic 上加载时,字段副本不会是小写的。

我的 Logstash 版本是 5.2

我正在使用以下配置:

filter {   
    mutate {
        rename => {"desc_ufe" => "state" }
        rename => {"desc_local" => "city" }
        rename => {"desc_bairro" => "neighborhood" }
        rename => {"desc_lograd" => "streetName" }
        rename => {"desc_cep" => "postalCode" }
        rename => {"desc_lograd_complemento" => "supplement" }
        rename => {"cod_mun" => "IBGEcode" }

        convert => {"IBGEcode" => "string"}

        add_field => {"statecp" => "%{state}"}
        add_field => {"citycp" => "%{city}"}
        add_field => {"neighborhoodcp" => "%{neighborhood}"}
        add_field => {"streetNamecp" => "%{streetName}"}
        add_field => {"supplementcp" => "%{supplement}"}

        lowercase => ["statecp","citycp","neighborhoodcp","streetNamecp","supplementcp"]
    }
 }

感谢您的帮助。

你正在成为变异过滤器做事顺序的牺牲品。它不是基于您的配置文件中的顺序——而是基于 mutate.rb 代码执行它的顺序。

顺序是(根据https://github.com/logstash-plugins/logstash-filter-mutate/blob/master/lib/logstash/filters/mutate.rb):

  • 强制
  • 重命名
  • 更新
  • 替换
  • 转换
  • gsub
  • 大写
  • 大写
  • 小写
  • 剥离
  • 移除
  • 拆分
  • 加入
  • 合并
  • 复制

后跟适用于匹配事件的任何其他内容(即 add_field

只需将您的 lowercase 移动到第二个 mutate 过滤器,它应该可以正常工作。