Watcher search payload transform
クラスターで検索を実行し、ウォッチ実行コンテキスト内の現在のペイロードを返された検索応答で置き換えるpayload transform。以下のスニペットは、ウォッチレベルでシンプルな検索変換を定義する方法を示しています:
Js
{
"transform" : {
"search" : {
"request" : {
"body" : { "query" : { "match_all" : {} }}
}
}
}
}
他の検索ベースの構造と同様に、Elasticsearchがサポートする完全な検索APIを利用できます。たとえば、以下の検索ペイロード変換は、error
優先度のイベントと一致するすべてのイベントインデックスに対して検索を実行します:
Js
{
"transform" : {
"search" : {
"request" : {
"indices" : [ "events-*" ],
"body" : {
"size" : 0,
"query" : {
"match" : { "priority" : "error"}
}
}
}
}
}
}
以下の表は、検索ペイロード変換のすべての利用可能な設定を示しています:
名前 | 必須 | デフォルト | 説明 |
---|---|---|---|
request.search_type |
いいえ | query_then_fetch | 検索のtype。 |
request.indices |
いいえ | すべてのインデックス | 検索する1つ以上のインデックス。 |
request.body |
いいえ | match_all クエリ |
リクエストの本文。 検索APIのリクエスト本文は、通常REST _search リクエストの本文で送信するのと同じ構造に従います。本文は静的テキストであるか、mustache テンプレートを含むことができます。 |
request.indices_options.expand_wildcards |
いいえ | open |
インデックスのワイルドカードを展開する方法を決定します。open 、closed 、およびhidden の組み合わせからなる配列。あるいは、none またはall の値。(マルチターゲット構文を参照) |
request.indices_options.ignore_unavailable |
いいえ | true |
検索が利用できないインデックスを寛容に無視するかどうかを決定するブール値。 (マルチターゲット構文を参照) |
request.indices_options.allow_no_indices |
いいえ | true |
検索が解決されないインデックスがない場合に寛容に結果を返さないかどうかを決定するブール値。 (マルチターゲット構文を参照) |
request.template |
いいえ | - | 検索テンプレートの本文。詳細については、 テンプレートの設定を参照してください。 |
timeout |
いいえ | 30s | 検索API呼び出しの応答を待つためのタイムアウト。この時間内に応答が返されない場合、検索ペイロード変換はタイムアウトし、失敗します。この設定はデフォルトのタイムアウトを上書きします。 |
Template support
検索ペイロード変換はmustache テンプレートをサポートしています。これは、本文定義の一部として、または既存のテンプレート(ファイルに定義されているか、保存されたスクリプトとしてElasticsearchに保存されている)を指すことができます。
たとえば、以下のスニペットは、ウォッチのスケジュールされた時間を参照する検索を示しています:
Js
{
"transform" : {
"search" : {
"request" : {
"indices" : [ "logstash-*" ],
"body" : {
"size" : 0,
"query" : {
"bool" : {
"must" : {
"match" : { "priority" : "error"}
},
"filter" : [
{
"range" : {
"@timestamp" : {
"from" : "{{ctx.trigger.scheduled_time}}||-30s",
"to" : "{{ctx.trigger.triggered_time}}"
}
}
}
]
}
}
}
}
}
}
}
テンプレートのモデルは、提供されたtemplate.params
設定と標準ウォッチ実行コンテキストモデルの結合です。
以下は、提供されたパラメータを参照するテンプレートを使用する例です:
Js
{
"transform" : {
"search" : {
"request" : {
"indices" : [ "logstash-*" ],
"template" : {
"source" : {
"size" : 0,
"query" : {
"bool" : {
"must" : {
"match" : { "priority" : "{{priority}}"}
},
"filter" : [
{
"range" : {
"@timestamp" : {
"from" : "{{ctx.trigger.scheduled_time}}||-30s",
"to" : "{{ctx.trigger.triggered_time}}"
}
}
}
]
}
},
"params" : {
"priority" : "error"
}
}
}
}
}
}
}