ウォッチャースクリプト条件
スクリプトを評価するウォッチ 条件。デフォルトのスクリプト言語は painless
です。言語がブール値の評価をサポートしている限り、Elasticsearch がサポートする任意のスクリプト言語を使用できます。mustache
および expression
言語はこの条件で使用するには制限が多すぎることに注意してください。詳細については、スクリプティングを参照してください。
スクリプト条件の使用
以下のスニペットは、常に true
を返すインライン script
条件を構成します:
Js
"condition" : {
"script" : "return true"
}
この例では、スクリプトを単純な文字列として定義します。この形式は、インラインスクリプトを定義するためのショートカットです。スクリプトの正式な定義は、スクリプトタイプとオプションの言語およびパラメータ値を指定するオブジェクトです。lang
属性が省略された場合、言語は painless
にデフォルト設定されます。Elasticsearch は、インライン と ストアド の2種類のスクリプトをサポートしています。
たとえば、以下のスニペットは、言語を明示的に指定し、単一のスクリプトパラメータ result
を定義する inline
スクリプトの正式な定義を示しています:
Js
"condition" : {
"script" : {
"source" : "return params.result",
"lang" : "painless",
"params" : {
"result" : true
}
}
}
インラインスクリプト
インラインスクリプトは、条件自体で定義されるスクリプトです。以下のスニペットは、常に true
を返すシンプルなペインレススクリプトの正式な構成を示しています。
Js
"condition" : {
"script" : {
"source" : "return true"
}
}
ストアドスクリプト
ストアドスクリプトは、Elasticsearch に 保存された スクリプトを指します。以下のスニペットは、id
によってスクリプトを参照する方法を示しています:
Js
"condition" : {
"script" : {
"id" : "my_script"
}
}
インライン スクリプトと同様に、スクリプト言語とパラメータを指定することもできます:
Js
"condition" : {
"script" : {
"id" : "my_script",
"lang" : "javascript",
"params" : { "color" : "red" }
}
}
ウォッチペイロードへのアクセス
スクリプトは、ペイロードデータを含む現在のウォッチ実行コンテキストや、条件定義を通じて渡されたパラメータにアクセスできます。
たとえば、以下のスニペットは、search
入力 を使用し、ヒット数が指定された閾値を超えているかどうかを確認する script
条件を使用するウォッチを定義します:
Js
{
"input" : {
"search" : {
"request": {
"indices" : "log-events",
"body" : {
"size" : 0,
"query" : { "match" : { "status" : "error" } }
}
}
}
},
"condition" : {
"script" : {
"source" : "return ctx.payload.hits.total > params.threshold",
"params" : {
"threshold" : 5
}
}
}
}
Elasticsearch の応答を評価するためにスクリプト条件を使用している場合、応答内のフィールドはもはやそのネイティブデータ型ではないことに注意してください。たとえば、応答内の @timestamp
は DateTime
ではなく文字列です。応答 @timestamp
を ctx.execution_time
と比較するには、@timestamp
文字列を ZonedDateTime
に解析する必要があります。たとえば:
Js
java.time.ZonedDateTime.parse(@timestamp)
ウォッチコンテキスト内で以下の変数を参照できます:
名前 | 説明 |
---|---|
ctx.watch_id |
現在実行中のウォッチの ID。 |
ctx.execution_time |
このウォッチの実行が開始された時間。 |
ctx.trigger.triggered_time |
このウォッチがトリガーされた時間。 |
ctx.trigger.scheduled_time |
このウォッチがトリガーされる予定だった時間。 |
ctx.metadata.* |
ウォッチに関連するメタデータ。 |
ctx.payload.* |
ウォッチの入力によって読み込まれたペイロードデータ。 |