Watcher 链式输入

编辑

使用 chain 输入,可在触发监控时将数据从多个来源加载到监控执行上下文中。链中的输入按顺序处理,后续输入可以访问前面输入加载的数据。

chain 输入允许您根据来自多个来源的数据执行操作。您还可以使用一个输入收集的数据来从另一个来源加载数据。

例如,以下链式输入使用 simple 输入设置的路径从 HTTP 服务器加载数据。

"input" : {
  "chain" : {
    "inputs" : [ 
      {
        "first" : {
          "simple" : { "path" : "/_search" }
        }
      },
      {
        "second" : {
          "http" : {
            "request" : {
              "host" : "localhost",
              "port" : 9200,
              "path" : "{{ctx.payload.first.path}}" 
            }
          }
        }
      }
    ]
  }
}

链中的输入指定为数组,以保证输入处理的顺序。(JSON 不保证任意对象的顺序。)

加载 first 输入设置的 path

访问链式输入数据

编辑

要引用特定输入加载的数据,可以使用输入的名称:ctx.payload.<input-name>.<value>

转换链式输入数据

编辑

在某些用例中,第一个输入的输出应作为后续输入的输入。这需要您在将数据传递到下一个输入之前进行转换。

为了实现这一点,您可以在两个指定的输入之间使用转换输入,请参见以下示例。请注意,第一个输入仍将以其原始形式在 ctx.payload.first 中可用。

"input" : {
  "chain" : {
    "inputs" : [ 
      {
        "first" : {
          "simple" : { "path" : "/_search" }
        }
      },
      {
        "second" : {
          "transform" : {
            "script" : "return [ 'path' : ctx.payload.first.path + '/' ]"
          }
        }
      },
      {
        "third" : {
          "http" : {
            "request" : {
              "host" : "localhost",
              "port" : 9200,
              "path" : "{{ctx.payload.second.path}}" 
            }
          }
        }
      }
    ]
  }
}