Logsta sh mutate gsub не работает внутри оператора if - PullRequest
0 голосов
/ 14 января 2020

У меня есть проблема с использованием logsta sh Фильтр мутирования gsub.

Обязательный

Удалите символы "Z C" из поля и поместите его в float

{
      "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", потому что он зависит от того, существуют ли два символа внутри поля для положительного или отрицательного смещения.

1 Ответ

3 голосов
/ 14 января 2020

Ваше условие неверно, если вы используете "field" logsta sh понимает, что как строка со значением field, правильный путь - использовать формат [field].

Измените условное на следующее.

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