ELKスタックにログファイルが入っています。フィールド(foo)をコピーしてさまざまな変更を実行したいのですが、フィールド(foo)が常に存在するとは限りません。
Fooが存在しない場合、barは作成されますが、リテラル文字列"%{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] { }
非数値フィールドの場合。