Watcher 链式载荷转换

编辑

一个载荷转换,它按顺序执行配置好的载荷转换列表,形成链式结构,其中一个转换的输出作为链中下一个转换的输入。此转换接受的载荷作为链中第一个转换的输入,链中最后一个转换的输出是整个 chain 转换的输出。

你可以使用链式载荷转换来通过其他可用的转换构建更复杂的转换。例如,你可以组合一个search 载荷转换和一个 script 载荷转换,如下面的代码片段所示

"transform" : {
  "chain" : [ 
    {
      "search" : {  
        "request": {
          "indices" : [ "logstash-*" ],
          "body" : {
            "size" : 0,
            "query" : {
              "match" : { "priority" : "error" }
            }
          }
        }
      }
    },
    {
      "script" : "return [ 'error_count' : ctx.payload.hits.total ]"  
    }
  ]
}

chain 载荷转换的定义

链中的第一个转换(在本例中,是一个 search 载荷转换)

链中的第二个也是最后一个转换(在本例中,是一个 script 载荷转换)

此示例在集群上执行 count 搜索,查找 error 事件。然后将搜索结果传递给第二个 script 载荷转换。script 载荷转换提取总命中数,并将其分配给新生成的载荷中的 error_count 字段。这个新的载荷是 chain 载荷转换的输出,并替换 Watch 执行上下文中的载荷。