elasticsearch 使用logstash修改字段的内容,elasticsearch,logstash,elasticsearch,Logstash" /> elasticsearch 使用logstash修改字段的内容,elasticsearch,logstash,elasticsearch,Logstash" />

elasticsearch 使用logstash修改字段的内容

elasticsearch 使用logstash修改字段的内容,elasticsearch,logstash,elasticsearch,Logstash,我使用logstash从sql数据库获取数据。有一个名为“code”的字段,其中的内容 这一结构: PO0000001209 ST0000000909 我想做的是去掉字母后面的6个零,得到以下结果: PO1209 ST0909 我将把结果放在另一个名为“code_short”的字段中,并将其用于elasticsearch中的查询。我已经配置了输入 和logstash中的输出,但我不知道如何使用grok或mutate过滤器来实现 我读过一些例子,但我对这个很陌生,我有点被卡住了 任何帮助都将不胜感

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

PO0000001209

ST0000000909

我想做的是去掉字母后面的6个零,得到以下结果:

PO1209

ST0909

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

我读过一些例子,但我对这个很陌生,我有点被卡住了


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

您可以为此使用
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}"}
  }
}
过滤器{
格罗克{
匹配=>{“代码”=>“(?[a-zA-Z]+)000000%{INT:suffix}”
add_field=>{“code_short”=>“%{prefix}%{suffix}}”
}
}

太棒了,很高兴它成功了!出于好奇,您选择了哪种解决方案?我已经使用了第二种,它完全符合我的要求,谢谢!!我想知道您是否可以帮助我创建这个主题,它与您帮助我解决的这个问题有关,任何帮助都会很好,谢谢: