Watcher search payload transform

クラスターで検索を実行し、ウォッチ実行コンテキスト内の現在のペイロードを返された検索応答で置き換えるpayload transform。以下のスニペットは、ウォッチレベルでシンプルな検索変換を定義する方法を示しています:

Js

  1. {
  2. "transform" : {
  3. "search" : {
  4. "request" : {
  5. "body" : { "query" : { "match_all" : {} }}
  6. }
  7. }
  8. }
  9. }

他の検索ベースの構造と同様に、Elasticsearchがサポートする完全な検索APIを利用できます。たとえば、以下の検索ペイロード変換は、error優先度のイベントと一致するすべてのイベントインデックスに対して検索を実行します:

Js

  1. {
  2. "transform" : {
  3. "search" : {
  4. "request" : {
  5. "indices" : [ "events-*" ],
  6. "body" : {
  7. "size" : 0,
  8. "query" : {
  9. "match" : { "priority" : "error"}
  10. }
  11. }
  12. }
  13. }
  14. }
  15. }

以下の表は、検索ペイロード変換のすべての利用可能な設定を示しています:


表 88. 検索ペイロード変換設定

名前 必須 デフォルト 説明
request.search_type いいえ query_then_fetch 検索のtype
request.indices いいえ すべてのインデックス 検索する1つ以上のインデックス。
request.body いいえ match_all クエリ リクエストの本文。
検索APIのリクエスト本文は、通常REST _searchリクエストの本文で送信するのと同じ構造に従います。本文は静的テキストであるか、mustache テンプレートを含むことができます。
request.indices_options.expand_wildcards いいえ open インデックスのワイルドカードを展開する方法を決定します。openclosed、および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

  1. {
  2. "transform" : {
  3. "search" : {
  4. "request" : {
  5. "indices" : [ "logstash-*" ],
  6. "body" : {
  7. "size" : 0,
  8. "query" : {
  9. "bool" : {
  10. "must" : {
  11. "match" : { "priority" : "error"}
  12. },
  13. "filter" : [
  14. {
  15. "range" : {
  16. "@timestamp" : {
  17. "from" : "{{ctx.trigger.scheduled_time}}||-30s",
  18. "to" : "{{ctx.trigger.triggered_time}}"
  19. }
  20. }
  21. }
  22. ]
  23. }
  24. }
  25. }
  26. }
  27. }
  28. }
  29. }

テンプレートのモデルは、提供されたtemplate.params設定と標準ウォッチ実行コンテキストモデルの結合です。

以下は、提供されたパラメータを参照するテンプレートを使用する例です:

Js

  1. {
  2. "transform" : {
  3. "search" : {
  4. "request" : {
  5. "indices" : [ "logstash-*" ],
  6. "template" : {
  7. "source" : {
  8. "size" : 0,
  9. "query" : {
  10. "bool" : {
  11. "must" : {
  12. "match" : { "priority" : "{{priority}}"}
  13. },
  14. "filter" : [
  15. {
  16. "range" : {
  17. "@timestamp" : {
  18. "from" : "{{ctx.trigger.scheduled_time}}||-30s",
  19. "to" : "{{ctx.trigger.triggered_time}}"
  20. }
  21. }
  22. }
  23. ]
  24. }
  25. },
  26. "params" : {
  27. "priority" : "error"
  28. }
  29. }
  30. }
  31. }
  32. }
  33. }
  34. }