98 lines
3.9 KiB
Plaintext
98 lines
3.9 KiB
Plaintext
|
[[condition-compare]]
|
||
|
==== Compare Condition
|
||
|
|
||
|
A watch <<condition, condition>> that simply compares a value in the <<watch-execution-context, Watch Execution Context Model>>
|
||
|
to given value. The value in the model is identified by a path within that model.
|
||
|
|
||
|
While limited in its functionality, the advantage of this condition over the <<condition-script, Script Condition>>
|
||
|
is that you do not have to enable dynamic scripting to use compare conditions.
|
||
|
|
||
|
===== Using a Compare Condition
|
||
|
|
||
|
The following snippet configures a `compare` condition that returns `true` if the number of
|
||
|
the total hits in the search result (typically loaded by the <<input-search, Search Input>>) is
|
||
|
higher or equals 5:
|
||
|
|
||
|
[source,json]
|
||
|
--------------------------------------------------
|
||
|
{
|
||
|
...
|
||
|
|
||
|
"condition" : {
|
||
|
"compare" : {
|
||
|
"ctx.payload.hits.total" : { <1>
|
||
|
"gte" : 5 <2>
|
||
|
}
|
||
|
}
|
||
|
...
|
||
|
}
|
||
|
--------------------------------------------------
|
||
|
<1> The field name is the path to the execution context model
|
||
|
<2> The field name (here `gte`) is the comparison operator, and the value is the value to compare to.
|
||
|
|
||
|
|
||
|
The path is a "dot-notation" expression that can reference the following variables in the watch context:
|
||
|
|
||
|
[options="header"]
|
||
|
|======
|
||
|
| Name | Description
|
||
|
| `ctx.watch_id` | The id of the watch that is currently executing.
|
||
|
| `ctx.execution_time` | The time execution of this watch started.
|
||
|
| `ctx.trigger.triggered_time` | The time this watch was triggered.
|
||
|
| `ctx.trigger.scheduled_time` | The time this watch was supposed to be triggered.
|
||
|
| `ctx.metadata.*` | Any metadata associated with the watch.
|
||
|
| `ctx.payload.*` | The payload data loaded by the watch's input.
|
||
|
|======
|
||
|
|
||
|
TIP: You can reference entries in arrays using their zero-based array indices. For example, to access the third
|
||
|
element of the `ctx.payload.hits.hits` array, use `ctx.payload.hits.hits.2`.
|
||
|
|
||
|
The comparison operator can be any one of the following:
|
||
|
|
||
|
[options="header"]
|
||
|
|======
|
||
|
| Name | Description
|
||
|
| `eq` | Returns `true` when the resolved value equals the given one (applies to numeric, string, list, object and values)
|
||
|
| `not_eq` | Returns `true` when the resolved value does not equal the given one (applies to numeric, string, list, object and null values)
|
||
|
| `gt` | Returns `true` when the resolved value is greater than the given one (applies to numeric and string values)
|
||
|
| `gte` | Returns `true` when the resolved value is greater/equal than/to the given one (applies to numeric and string values)
|
||
|
| `lt` | Returns `true` when the resolved value is less than the given one (applies to numeric and string values)
|
||
|
| `lte` | Returns `true` when the resolved value is less/equal than/to the given one (applies to numeric and string values)
|
||
|
|======
|
||
|
|
||
|
When dealing with dates/times, the specified value can hold date math expression in the form of `<{expression}>`. For example, one
|
||
|
can compare the watch execution time as follows:
|
||
|
[source,json]
|
||
|
--------------------------------------------------
|
||
|
{
|
||
|
...
|
||
|
|
||
|
"condition" : {
|
||
|
"compare" : {
|
||
|
"ctx.execution_time" : {
|
||
|
"gte" : "<{now-5m}>"
|
||
|
}
|
||
|
}
|
||
|
...
|
||
|
}
|
||
|
--------------------------------------------------
|
||
|
|
||
|
It is also possible to compare one value in the context model to another value in the same model. This can be done by
|
||
|
specifying the compared value as a path in the form of `{{path}}`. The following snippet shows a condition that compares
|
||
|
two values in the payload
|
||
|
|
||
|
[source,json]
|
||
|
--------------------------------------------------
|
||
|
{
|
||
|
...
|
||
|
|
||
|
"condition" : {
|
||
|
"compare" : {
|
||
|
"ctx.payload.aggregations.status.buckets.error.doc_count" : {
|
||
|
"not_eq" : "{{ctx.payload.aggregations.handled.buckets.true.doc_count}}"
|
||
|
}
|
||
|
}
|
||
|
...
|
||
|
}
|
||
|
--------------------------------------------------
|