弹性搜索,观察者访问结果集中的虚线字段名称

时间:2017-09-15 13:30:53

标签: json elasticsearch elasticsearch-watcher

我为弹性搜索观察器设置创建了一个查询。结果集如下所示:

interface SignalrWindow extends Window {
    $: any;
}

declare var window: SignalrWindow ;

在操作部分,我可以使用以下方式访问字段:

"_index": "transaction_broker-2017.09.15",
        "_type": "transaction_broker",
        "_id": "AV6Fn_UQ9KbnKce40avY",
        "_score": 3.8539968,
        "_source": {
          "tbroker.workitem.sync_check.tbroker_value": 7000,
          "source": "/logs/web/tomcat/tbroker.log.json",
          "type": "transaction_broker",
          "tbroker.job.instance_id": "lixporta-p00.xxxxxxx.15053054001381505305457198",
          "tbroker.workitem.sync_check.backend_total_value": 6995,
          "tbroker.appversion": "1.1.135-180",
          "@version": 1,
          "beat": {
            "hostname": "lixporta-p00",
            "name": "lixporta-p00",
            "version": "5.1.1"

在源标记之后,我使用上面列表中的“type”字段。其他例子是:

"actions": {
    "my-logging-action": {
      "logging": {
        "text": "There are {{ctx.payload.hits.hits.0._source.....

这很好用...... 但是不可能使用像

这样的字段
"ctx.payload.hits.hits.0._source.beat.hostname"

解析器认为这些字段是嵌套的,但这只是一个带有点的字段名。 有没有可能“逃避”这个字段名称? 谁也遇到过这个问题?

非常感谢&最好的祝福 克劳斯

2 个答案:

答案 0 :(得分:0)

无法直接访问其中包含点的源字段,但如果您应用这样的转换:

"transform": {
  "script": {
    "inline": "return [ 'host' : ctx.payload.hits.hits[0]._source.host, 'tbroker_value' : ctx.payload.hits.hits[0]._source['tbroker.workitem.sync_check.tbroker_value']]",
   "lang": "painless"
  }
}

然后您可以在行动中使用{{ctx.payload.host}}{{ctx.payload.tbroker_value}}

答案 1 :(得分:0)

我认为以下应该有效:

{{#ctx.payload.hits.hits.0._source}}{{tbroker.workitem.sync_check.tbroker_value}}{{/ctx.payload.hits.hits.0._source}}

这是 Mustache 的限制,这是一种解决方法。