49 lines
1.4 KiB
Plaintext
49 lines
1.4 KiB
Plaintext
[[input-chain]]
|
|
=== Chain Input
|
|
|
|
Use the `chain` input to load data from multiple sources into the watch
|
|
execution context when the watch is triggered. The inputs in a chain
|
|
are processed in order and the data loaded by an input can be accessed by the
|
|
subsequent inputs in the chain.
|
|
|
|
The `chain` input enables you perform actions based on data from multiple
|
|
sources. You can also use the data collected by one input to load data
|
|
from another source.
|
|
|
|
For example, the following chain input loads data from an HTTP server using the
|
|
path set by a `simple` input:
|
|
|
|
[source,js]
|
|
--------------------------------------------------
|
|
"input" : {
|
|
"chain" : {
|
|
"inputs" : [ <1>
|
|
{
|
|
"first" : {
|
|
"simple" : { "path" : "/_search" }
|
|
}
|
|
},
|
|
{
|
|
"second" : {
|
|
"http" : {
|
|
"request" : {
|
|
"host" : "localhost",
|
|
"port" : 9200,
|
|
"path" : "{{ctx.payload.first.path}}" <2>
|
|
}
|
|
}
|
|
}
|
|
}
|
|
]
|
|
}
|
|
}
|
|
--------------------------------------------------
|
|
<1> The inputs in a chain are specified as an array to guarantee the order in
|
|
which the inputs are processed. (JSON does not guarantee the order of
|
|
arbitrary objects.)
|
|
<2> Loads the `path` set by the `first` input.
|
|
|
|
==== Accessing Chained Input Data
|
|
|
|
To reference data loaded by a particular input, you use the input's name,
|
|
`ctx.payload.<input-name>.<value>`. |