Ответ 1
Чтобы проверить, существует ли поле foo:
1) Для полей числового типа используйте:
if ([foo]) {
...
}
2) Для типов, отличных от числовых, таких как boolean, используйте строку:
if ("" in [foo]) {
...
}
У меня есть файлы журналов, входящие в стек ELK. Я хочу скопировать поле (foo), чтобы выполнять различные мутации на нем, но поле (foo) не всегда присутствует.
Если foo не существует, тогда бар все еще создается, но ему назначается строка литерала "%{foo}"
Как я могу выполнить мутацию только в том случае, если поле существует?
Я пытаюсь сделать что-то подобное.
if ["foo"] {
mutate {
add_field => "bar" => "%{foo}
}
}
Чтобы проверить, существует ли поле foo:
1) Для полей числового типа используйте:
if ([foo]) {
...
}
2) Для типов, отличных от числовых, таких как boolean, используйте строку:
if ("" in [foo]) {
...
}
"foo" - буквальная строка.
[foo] - поле.
# technically anything that returns 'true', so good for numbers and basic strings:
if [foo] {
}
# contains a value
if [foo] =~ /.+/ {
}
В Logstash 2.2.2 конструктор ("" in [field])
не работает для меня.
if ![field] { }
для нечислового поля.