比较条件
Elastic Stack Serverless
使用 compare
条件对 watch 负载中的值执行简单比较。 您可以使用 compare
条件,而无需启用动态脚本。
名称 | 描述 |
---|---|
eq |
当解析的值等于给定的值时返回 true (适用于数字、字符串、列表、对象和值) |
not_eq |
当解析的值不等于给定的值时返回 true (适用于数字、字符串、列表、对象和 null 值) |
gt |
当解析的值大于给定的值时返回 true (适用于数字和字符串值) |
gte |
当解析的值大于或等于给定的值时返回 true (适用于数字和字符串值) |
lt |
当解析的值小于给定的值时返回 true (适用于数字和字符串值) |
lte |
当解析的值小于或等于给定的值时返回 true (适用于数字和字符串值) |
要使用 compare
条件,您需要指定要评估的执行上下文中的值、一个 比较运算符 以及要比较的值。 例如,如果 搜索结果中总命中数大于或等于 5,则以下 compare
条件返回 true
。
{
"condition" : {
"compare" : {
"ctx.payload.hits.total" : {
"gte" : 5
}
}
}
}
- 使用点符号引用执行上下文中的值。
- 指定一个比较运算符和您想要比较的值。
您还可以通过将比较值指定为 {{path}}
形式的路径来比较执行上下文中的两个值。 例如,以下条件将 ctx.payload.aggregations.status.buckets.error.doc_count
与 ctx.payload.aggregations.handled.buckets.true.doc_count
进行比较。
{
"condition" : {
"compare" : {
"ctx.payload.aggregations.status.buckets.error.doc_count" : {
"not_eq" : "{{ctx.payload.aggregations.handled.buckets.true.doc_count}}"
}
}
}
}
在比较日期和时间时,您可以使用 <{{expression}}>
形式的日期数学表达式。 例如,如果 watch 在过去五分钟内执行,则以下表达式返回 true
{
"condition" : {
"compare" : {
"ctx.execution_time" : {
"gte" : "<{now-5m}>"
}
}
}
}
您可以使用“点符号”来访问执行上下文中的值。 输入加载到执行上下文中的值以 ctx.payload
为前缀。
您可以使用基于零的数组索引来引用数组中的条目。 例如,要访问 ctx.payload.hits.hits
数组的第三个元素,请使用 ctx.payload.hits.hits.2
。
名称 | 描述 |
---|---|
ctx.watch_id |
当前正在执行的 watch 的 ID。 |
ctx.execution_time |
此 watch 开始执行的时间。 |
ctx.trigger.triggered_time |
触发此 watch 的时间。 |
ctx.trigger.scheduled_time |
应触发此 watch 的时间。 |
ctx.metadata.* |
与 watch 关联的任何元数据。 |
ctx.payload.* |
watch 的输入加载的有效负载数据。 |