Watcher 比较条件编辑

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

表 82. 支持的比较运算符

名称 描述

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}> 形式的日期数学表达式。例如,以下表达式如果监视器在过去五分钟内执行,则返回 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

当前正在执行的监视器的 ID。

ctx.execution_time

此监视器开始执行的时间。

ctx.trigger.triggered_time

此监视器被触发的時間。

ctx.trigger.scheduled_time

此监视器应该被触发的時間。

ctx.metadata.*

与监视器关联的任何元数据。

ctx.payload.*

监视器输入加载的有效负载数据。