使用logstash修改字段的内容

时间:2017-01-31 13:25:49

标签: elasticsearch logstash

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

PO0000001209

ST0000000909

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

PO1209

ST0909

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

我已经阅读了一些例子,但我对此很新,而且我有点卡住了。

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

1 个答案:

答案 0 :(得分: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}"}
  }
}