108 lines
3.9 KiB
Plaintext
108 lines
3.9 KiB
Plaintext
[[condition-compare]]
|
|
=== Compare Condition
|
|
|
|
Use the `compare` condition to perform a simple comparison against a value in
|
|
the watch payload. You can use the `compare` condition without enabling
|
|
dynamic scripting.
|
|
|
|
[[condition-compare-operators]]
|
|
. Supported Comparison Operators
|
|
[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)
|
|
|======
|
|
|
|
==== Using a Compare Condition
|
|
|
|
To use the `compare` condition, you specify the value in the execution context
|
|
that you want to evaluate, a <<condition-compare-operators,comparison operator>>,
|
|
and the value you want to compare against. For example, the following `compare`
|
|
condition returns `true` if the number of the total hits in the <<input-search,
|
|
search result>> is greater than or equal to 5:
|
|
|
|
[source,js]
|
|
--------------------------------------------------
|
|
{
|
|
"condition" : {
|
|
"compare" : {
|
|
"ctx.payload.hits.total" : { <1>
|
|
"gte" : 5 <2>
|
|
}
|
|
}
|
|
}
|
|
--------------------------------------------------
|
|
<1> Use dot notation to reference a value in the execution context.
|
|
<2> Specify a comparison operator and the value you want to compare against.
|
|
|
|
[[compare-condition-date-math]]
|
|
When comparing dates and times, you can use date math expressions
|
|
of the form `<{expression}>`. For example, the following expression returns
|
|
`true` if the watch was executed within the last five minutes:
|
|
|
|
[source,js]
|
|
--------------------------------------------------
|
|
{
|
|
"condition" : {
|
|
"compare" : {
|
|
"ctx.execution_time" : {
|
|
"gte" : "<{now-5m}>"
|
|
}
|
|
}
|
|
}
|
|
--------------------------------------------------
|
|
|
|
You can also compare two values in the execution context by specifying the
|
|
compared value as a path of the form of `{{path}}`. For example, the following
|
|
condition compares the `ctx.payload.aggregations.status.buckets.error.doc_count`
|
|
to the `ctx.payload.aggregations.handled.buckets.true.doc_count`:
|
|
|
|
[source,js]
|
|
--------------------------------------------------
|
|
{
|
|
"condition" : {
|
|
"compare" : {
|
|
"ctx.payload.aggregations.status.buckets.error.doc_count" : {
|
|
"not_eq" : "{{ctx.payload.aggregations.handled.buckets.true.doc_count}}"
|
|
}
|
|
}
|
|
}
|
|
--------------------------------------------------
|
|
|
|
==== Accessing Values in the Execution Context
|
|
|
|
You use "dot-notation" to access values in the execution context. Values loaded
|
|
into the execution context by the input are prefixed by `ctx.payload`.
|
|
|
|
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`.
|
|
|
|
[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.
|
|
|======
|