【问题标题】:Elasticsearch watcher email array valueElasticsearch 观察者电子邮件数组值
【发布时间】:2016-07-10 00:52:21
【问题描述】:

我正在使用 ELK watcher 创建一个警报,该警报发送使用“转换”映射转换的值数组。

"transform": {
   "script": "return [ err_yest : ctx.payload.aggregations.errorcount.buckets.collect { [err_count:it.doc_count, list_errors: it.errs.buckets.collect{[emsg:it.key,emsc:it.doc_count]}] } ]"
 },

有没有办法使用任何循环方法在电子邮件警报正文中打印数组值?我尝试了 groovy 脚本,但得到一个错误,说它不受支持。我所能做的就是手动打印数组中的值,如下所示。

"body" : {
          "html": "<table width='400px' border='1'><thead><tr><th colspan='4'>Error Messages</th></tr><tr><th colspan='2'>Yesterday</th><th colspan='2'>Today</th></tr></thead><tbody><tr><td>{{ctx.payload.err_yest.0.list_errors.0.emsc}}</td><td align='center'>{{ctx.payload.err_yest.0.list_errors.0.emsg}}</td><td>{{ctx.payload.err_yest.1.list_errors.0.emsc}}</td><td align='center'>{{ctx.payload.err_yest.1.list_errors.0.emsg}}</td></tr><tr><td>{{ctx.payload.err_yest.0.list_errors.1.emsc}}</td><td align='center'>{{ctx.payload.err_yest.0.list_errors.1.emsg}}</td><td>{{ctx.payload.err_yest.1.list_errors.1.emsc}}</td><td align='center'>{{ctx.payload.err_yest.1.list_errors.1.emsg}}</td></tr><tr><td>{{ctx.payload.err_yest.0.list_errors.2.emsc}}</td><td align='center'>{{ctx.payload.err_yest.0.list_errors.2.emsg}}</td><td>{{ctx.payload.err_yest.1.list_errors.2.emsc}}</td><td align='center'>{{ctx.payload.err_yest.1.list_errors.2.emsg}}</td></tr></tbody></table>"
        },

【问题讨论】:

    标签: arrays elasticsearch groovy elasticsearch-watcher


    【解决方案1】:

    你需要使用 Mustache 模板

    语法是这样的:

    {{#ctx.payload.err_yest}} {{#list_errors}} {{emsc}} {{/list_errors}}{{/ctx.payload.err_yest}}
    

    这将遍历err_yest 中的所有对象,然后遍历所有list_errors 以获取err_yest 对象并显示esmc

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-10
    • 2018-01-03
    • 2011-06-18
    • 2015-11-04
    相关资源
    最近更新 更多