【问题标题】:Logstash - Split characters in string into 2 fieldsLogstash - 将字符串中的字符拆分为 2 个字段
【发布时间】:2016-12-08 02:44:25
【问题描述】:

我在一个 CSV 文件中读取 Logstash,该文件包含一个字段 my_id,并且是一个由数字组成的 8 位字符串。

我希望输出文件有 2 个字段来代替 my_id。一个名为 id_start 将是前 6 位数字和 id_end 将是最后 2 位数字。

示例:my_id:12345678 将变为 id_start:123456 和 id_end:78

我对 Logstash 很陌生,但我一直在阅读,我认为我需要使用 grok 过滤器来执行此操作 - 到目前为止,我创建第一个字段的尝试没有奏效:

filter {
  grok {
    match => ["id_start", "(?<my_id>.{6})"]
  }
}

我也发现很难找到这类事情的好例子,所以任何帮助都将不胜感激!

【问题讨论】:

    标签: logstash logstash-grok


    【解决方案1】:

    您可以使用ruby 过滤器并编写自定义 ruby​​ 代码,例如:

    filter {
      ruby {
        code => "
            event['id_start'] = event['my_id'][0..6]
            event['id_end'] = event['my_id'][6..8]
            "
      }
    }
    

    【讨论】:

      【解决方案2】:

      这与 Logstash 5.x+ 不同,它们实现了 getter 和 setter,并限制了对变量的访问。

      ruby {
        code => "
            event.set('[id_start]', event.get('[my_id]')[0..6])
            event.set('[id_end]', event.get('[my_id]')[6..8])
            "
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-09-11
        • 2011-09-09
        • 2018-09-10
        • 2011-08-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多