Logstash mutate gsub 在 "if" 语句中不起作用

Logstash mutate gsub not working inside "if" statement

我在使用 logstash mutate 过滤器 gsub 时遇到问题。

必需

删除字段的 "ZC" 个字符并将其转换为浮点数

{
      "field" => "12.343,40ZC",
      "@timestamp" => 2020-01-06T23:00:00.000Z
}    

预期输出

{
       "field" => "-12343,40",
       "@timestamp" => 2020-01-06T23:00:00.000Z
}    

代码无效

filter{
  if "ZC" in "field" {
    mutate { gsub => ["field","ZC",""] } 
  }
}

代码有效

filter{
    mutate { gsub => ["field","ZC",""] } 
}

我需要 "if" 语句,因为这取决于两个字符是否存在于字段中以构成正浮点数或负浮点数。

你的条件是错误的,如果你使用 "field" logstash 理解作为一个字符串,值为 fieldcorrect way 是使用格式 [field]

将您的条件更改为以下内容。

filter {
  if "ZC" in [field] {
    mutate { gsub => ["field","ZC",""] } 
  }
}