0

ELKウォッチャーの「変換」プロセスへの入力としてペイロードを渡す方法は? 次の方法で試しましたが、それらを文字列としてgroovyファイルに渡します。

"transform": {
   "script": {
     "file": "error_parser",
     "lang": "groovy",
     "params": {
       "inputval": "{{ctx.payload.aggregations.errorcount.buckets}}"
     }
   }
 }

文字列または整数を渡したい場合、問題はありませんが、オブジェクトを渡します。それらをファイルに渡す方法はありますか?この場合、groovy スクリプトから返される出力値はどこに保存されますか (「条件」プロセスは、同様のケースで出力をブール値に評価します)。

グルーヴィーなコンテンツ:

println inputval
return inputval[0].doc_count

ウォッチャーを実行すると、次のエラーが発生します

{{ctx.payload.aggregations.errorcount.buckets}}
[2016-03-22 17:23:08,637][ERROR][watcher.transform.script ] [Hannah Levy] failed to execute [script] transform for [my-watch_2-2016-03-22T21:23:08.617
Z]
ScriptException[failed to run file script [error_parser] using lang [groovy]]; nested: MissingPropertyException[No such property: doc_count for class:
 java.lang.String];
        at org.elasticsearch.script.groovy.GroovyScriptEngineService$GroovyScript.run(GroovyScriptEngineService.java:318)
        at org.elasticsearch.watcher.transform.script.ExecutableScriptTransform.doExecute(ExecutableScriptTransform.java:73)
        at org.elasticsearch.watcher.transform.script.ExecutableScriptTransform.execute(ExecutableScriptTransform.java:59)
        at org.elasticsearch.watcher.transform.script.ExecutableScriptTransform.execute(ExecutableScriptTransform.java:40)
4

1 に答える 1

0

私はあなたがこれを行うことができないと確信しています:

"inputval": "{{ctx.payload.aggregations.errorcount.buckets}}"

代わりにスクリプトでこれを行います

println ctx.payload.aggregations.errorcount.buckets
return ctx.payload.aggregations.errorcount.buckets[0].doc_count

スクリプト部分のパラメーターを削除します

于 2016-03-23T17:55:24.377 に答える