2016-03-22 13 views
0

ELKウォッチャーの 'トランスフォーム'プロセスへの入力としてペイロードを渡すにはどうすればよいですか?私は次の方法で試してみましたが、文字列としてそれらをgroovyファイルに渡します。エラスティックウォッチャー変換スクリプト

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

私は、文字列または整数を渡したいとき、私はしかし、オブジェクトと、何の問題に直面していません。それらをファイルに渡す方法はありますか?そして、この場合、groovyスクリプトから返される出力値はどこに格納されますか( '条件'プロセスは同様の場合にブール値に出力を評価します)?

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) 

答えて

0

を実行したときに、私はあなたがこれを行うことはできません確信しているエラーを以下の取得:

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

私はどうなりますこれはあなたのスクリプトの代わりに

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

とスクリプト部分のパラメータを削除したい

+0

trasnform部分からgroovyに動的値を渡すことはできないのですか? – svjn

+0

私はあなたができることを述べている文書には何も見ていません – maximede

+0

ありがとうございました。これは動作します。 – svjn