链式输入
Elastic Stack 无服务器
使用 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}}"
}
}
}
}
]
}
}