Watcher 比较条件

编辑

使用 compare 条件对 watch 有效载荷中的值执行简单比较。您可以在不启用动态脚本的情况下使用 compare 条件。

表 84. 支持的比较运算符

名称 描述

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 
      }
    }
  }
}

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

指定比较运算符以及您要比较的值。

比较日期和时间时,您可以使用 <{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 的输入加载的有效载荷数据。