【问题标题】:Elasticsearch watcher transform scriptElasticsearch 观察者转换脚本
【发布时间】:2016-07-10 00:40:27
【问题描述】:

如何将有效负载作为输入传递给 ELK watcher 中的“转换”进程?我尝试过以下方式,但它将它们作为字符串传递给 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)

【问题讨论】:

    标签: elasticsearch groovy elasticsearch-watcher


    【解决方案1】:

    我很确定你不能这样做:

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

    我会在你的脚本中这样做

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

    我会删除脚本部分的参数

    【讨论】:

    • 您的意思是我们不能将任何动态值从 trasnform 部分传递给 groovy?
    • 我在文档中没有看到任何说明您可以
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-20
    • 2023-04-10
    • 1970-01-01
    • 2016-07-10
    • 2020-05-31
    • 1970-01-01
    相关资源
    最近更新 更多