正在加载

比较条件

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
      }
    }
  }
}
  1. 使用点符号引用执行上下文中的值。
  2. 指定一个比较运算符和您想要比较的值。

您还可以通过将比较值指定为 {{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}}"
      }
    }
  }
}

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