web-dev-qa-db-ja.com

フィールドが存在するかどうかのlogstashチェック

ELKスタックにログファイルが入っています。フィールド(foo)をコピーしてさまざまな変更を実行したいのですが、フィールド(foo)が常に存在するとは限りません。

Fooが存在しない場合、barは作成されますが、リテラル文字列"%{foo}"が割り当てられます

フィールドが存在する場合にのみミューテーションを実行するにはどうすればよいですか?

私はこのようなことをしようとしています。

if ["foo"] {
  mutate {
    add_field => "bar" => "%{foo}
  }
}
37
spuder

フィールドfooが存在するかどうかを確認するには:

1)数値型フィールドの場合:

 if ([foo]) {
    ...
 }

2)booleanなどの数値以外のタイプの場合、文字列は次を使用します:

if ("" in [foo]) {
    ...
}
76
Ofri Raviv

「foo」はリテラル文字列です。

[foo]はフィールドです。

# technically anything that returns 'true', so good for numbers and basic strings:
if [foo] {
}

# contains a value
if [foo] =~ /.+/ {
}
32
Alain Collins

Logstash 2.2.2では、("" in [field])コンストラクトが機能していないようです。

if ![field] { }

非数値フィールドの場合。

16
yvf