【问题标题】:Using a case insensitive Logstash filter使用不区分大小写的 Logstash 过滤器
【发布时间】:2017-01-20 17:12:15
【问题描述】:

如何将此 Logstash 过滤器更改为不区分大小写?

filter {
  if "foo" in [message] {
    mutate { add_field => { "Alert_level" => "5" }}
  }
}

https://github.com/elastic/logstash/pull/3636所示,我无法让它工作

【问题讨论】:

  • 这不是为你工作 ` filter { if [message] ~ /(?i)foo/ { mutate { add_field => { "Alert_level" => "5" } } } }`

标签: logstash logstash-grok logstash-configuration


【解决方案1】:

您提到的拉取请求从未合并,因此不可用(显然没有计划这样做)。

您可以使用另一种语法(在您的问题的一个 cmets 中提到):

filter {
  if "foo" =~ /(?i)message/ {
    ...
  }
}

语法将匹配messageMESSAGE 甚至MeSSaGe

【讨论】:

  • 呃,您的示例中有 2 个错误。首先,您要针对(常量)正则表达式 message 测试文字字符串 foo,无论区分大小写如何,它都不会匹配。其次,您交换了"foo"message 的位置。海报的原始表达式"foo" in [message] 基本上意味着“"foo"message 的子字符串”(或Java 术语中的message.contains("foo"))。当你使用正则表达式时,顺序是“variable匹配regex”,所以它应该是[message] =~ /(?i)foo/
猜你喜欢
  • 2013-08-07
  • 2013-10-24
  • 2022-12-02
  • 1970-01-01
  • 1970-01-01
  • 2018-07-10
  • 2016-03-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多