【问题标题】:Modify the content of a field using logstash使用 logstash 修改字段的内容
【发布时间】:2017-01-31 23:16:44
【问题描述】:

我正在使用 logstash 从 sql 数据库中获取数据。有一个名为“代码”的字段,其中的内容有 这个结构:

PO0000001209

ST0000000909

而我想要做的是删除字母后的6个零以获得以下结果:

PO1209

ST0909

我会将结果放在另一个名为“code_short”的字段中,并将其用于我在 elasticsearch 中的查询。我已经配置了输入 和 logstash 中的输出,但我不知道如何使用 grok 或 mutate 过滤器来做到这一点

我已经阅读了一些示例,但我对此很陌生,我有点卡住了。

任何帮助将不胜感激。谢谢。

【问题讨论】:

    标签: elasticsearch logstash


    【解决方案1】:

    您可以为此使用mutate/gsub 过滤器,但这将替换code 字段的值:

    filter {
      mutate {
        gsub => [
          "code", "000000", "",
        ]
      }
    }
    

    另一种选择是使用grok 过滤器,如下所示:

    filter {
      grok {
        match => { "code" => "(?<prefix>[a-zA-Z]+)000000%{INT:suffix}" }
        add_field => { "code_short" => "%{prefix}%{suffix}"}
      }
    }
    

    【讨论】:

    • 太棒了,很高兴它成功了!只是出于好奇,您选择了哪种解决方案?
    • 我用过第二个,它完全符合我的要求,谢谢!!
    • 我想知道您是否可以帮助解决我创建的这个主题,它与您帮助我解决的这个问题有关,任何帮助都会很棒,谢谢:stackoverflow.com/questions/42203738/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-10-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-13
    • 2011-08-23
    • 2021-06-22
    相关资源
    最近更新 更多