加载中

比较条件

使用 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. 使用点号表示法(dot notation)来引用执行上下文中的值。
  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}}> 形式的日期数学表达式。例如,如果监视器是在最近五分钟内执行的,以下表达式将返回 true

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

你可以使用“点号表示法”来访问执行上下文中的值。由输入(input)加载到执行上下文中的值以 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.* 由监视器的输入加载的载荷(payload)数据。
© . This website operates independently and is not affiliated with or endorsed by Elasticsearch B.V. All brand names, logos, and trademarks are the property of their respective owners.