Watcher 比较条件

编辑

使用 compare 条件对 watch 负载中的值执行简单比较。您可以使用 compare 条件,无需启用动态脚本。

表 83. 支持的比较运算符

名称 描述

eq

当解析后的值等于给定值时返回 true(适用于数字、字符串、列表、对象和值)

not_eq

当解析后的值不等于给定值时返回 true(适用于数字、字符串、列表、对象和空值)

gt

当解析后的值大于给定值时返回 true(适用于数字和字符串值)

gte

当解析后的值大于或等于给定值时返回 true(适用于数字和字符串值)

lt

当解析后的值小于给定值时返回 true(适用于数字和字符串值)

lte

当解析后的值小于或等于给定值时返回 true(适用于数字和字符串值)

使用比较条件

编辑

要使用 compare 条件,请指定您要评估的执行上下文中的值、一个 比较运算符 以及您要比较的值。例如,以下 compare 条件如果 搜索结果 中总命中数大于或等于 5,则返回 true

{
  "condition" : {
    "compare" : {
      "ctx.payload.hits.total" : { 
        "gte" : 5 
      }
    }
  }
}

使用点表示法引用执行上下文中的值。

指定一个比较运算符和您要比较的值。

比较日期和时间时,可以使用 <{expression}> 形式的日期数学表达式。例如,以下表达式如果 watch 在过去五分钟内执行,则返回 true

{
  "condition" : {
    "compare" : {
      "ctx.execution_time" : {
        "gte" : "<{now-5m}>"
      }
    }
  }
}

您还可以通过将比较值指定为 {{path}} 形式的路径来比较执行上下文中的两个值。例如,以下条件将 ctx.payload.aggregations.status.buckets.error.doc_countctx.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}}"
      }
    }
  }
}

访问执行上下文中的值

编辑

您可以使用“点表示法”访问执行上下文中的值。输入加载到执行上下文中的值以 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 的输入加载的有效负载数据。