ウォッチャー比較条件

compare 条件を使用して、ウォッチペイロード内の値に対して簡単な比較を行います。compare 条件は、動的スクリプトを有効にせずに使用できます。


表 82. サポートされている比較演算子

名前 説明
eq 解決された値が指定された値と等しい場合、true を返します(数値、文字列、リスト、オブジェクトおよび値に適用)
not_eq 解決された値が指定された値と等しくない場合、true を返します(数値、文字列、リスト、オブジェクトおよび null 値に適用)
gt 解決された値が指定された値より大きい場合、true を返します(数値および文字列値に適用)
gte 解決された値が指定された値以上である場合、true を返します(数値および文字列値に適用)
lt 解決された値が指定された値より小さい場合、true を返します(数値および文字列値に適用)
lte 解決された値が指定された値以下である場合、true を返します(数値および文字列値に適用)

比較条件の使用

compare 条件を使用するには、評価したい実行コンテキスト内の値、比較演算子、および比較対象の値を指定します。たとえば、次の compare 条件は、検索結果 の合計ヒット数が 5 以上である場合、true を返します:

Js

  1. {
  2. "condition" : {
  3. "compare" : {
  4. "ctx.payload.hits.total" : {
  5. "gte" : 5
  6. }
  7. }
  8. }
  9. }
実行コンテキスト内の値を参照するためにドット表記を使用します。
比較演算子と比較対象の値を指定します。

日付と時刻を比較する場合、<{expression}> の形式の日時数学式を使用できます。たとえば、次の式は、ウォッチが過去 5 分以内に実行された場合、true を返します:

Js

  1. {
  2. "condition" : {
  3. "compare" : {
  4. "ctx.execution_time" : {
  5. "gte" : "<{now-5m}>"
  6. }
  7. }
  8. }
  9. }

実行コンテキスト内の 2 つの値を比較するには、{{path}} の形式のパスとして比較対象の値を指定します。たとえば、次の条件は ctx.payload.aggregations.status.buckets.error.doc_countctx.payload.aggregations.handled.buckets.true.doc_count と比較します:

Js

  1. {
  2. "condition" : {
  3. "compare" : {
  4. "ctx.payload.aggregations.status.buckets.error.doc_count" : {
  5. "not_eq" : "{{ctx.payload.aggregations.handled.buckets.true.doc_count}}"
  6. }
  7. }
  8. }
  9. }

実行コンテキスト内の値へのアクセス

値にアクセスするには「ドット表記」を使用します。入力によって実行コンテキストに読み込まれた値は、ctx.payload で接頭辞が付けられます。

配列内のエントリをゼロベースの配列インデックスを使用して参照できます。たとえば、ctx.payload.hits.hits 配列の 3 番目の要素にアクセスするには、ctx.payload.hits.hits.2 を使用します。

名前 説明
ctx.watch_id 現在実行中のウォッチの ID。
ctx.execution_time このウォッチの実行が開始された時間。
ctx.trigger.triggered_time このウォッチがトリガーされた時間。
ctx.trigger.scheduled_time このウォッチがトリガーされる予定だった時間。
ctx.metadata.* ウォッチに関連付けられたメタデータ。
ctx.payload.* ウォッチの入力によって読み込まれたペイロードデータ。