Spec-Zone.ru › Elasticsearch 7
›Elasticsearch Guide [7.17] ›Watcher ›Преобразования полезной нагрузки

Преобразование полезной нагрузки поиска Watcher

Преобразование полезной нагрузки, выполняющее поиск в кластере и заменяющее текущую полезную нагрузку в контексте выполнения наблюдения результатами поиска. Следующий фрагмент кода демонстрирует, как можно определить простое преобразование поиска на уровне наблюдения:

{
  "transform" : {
    "search" : {
      "request" : {
        "body" : { "query" : { "match_all" : {} }}
      }
    }
  }
}

Как и любой другой конструкт, основанный на поиске, можно использовать весь API поиска, поддерживаемый Elasticsearch. Например, следующее преобразование полезной нагрузки поиска выполняет поиск по всем индексам событий, сопоставляя события с error приоритетом:

{
  "transform" : {
    "search" : {
      "request" : {
        "indices" : [ "events-*" ],
        "body" : {
          "size" : 0,
          "query" : {
            "match" : { "priority" : "error"}
          }
        }
      }
    }
  }
}

В следующей таблице перечислены все доступные параметры для преобразования полезной нагрузки поиска:

Таблица 83. Параметры преобразования полезной нагрузки поиска

Имя Обязательно Значение по умолчанию Описание

request.search_type

нет

query_then_fetch

Тип поиска type.

request.indices

нет

все индексы

Один или несколько индексов для поиска.

request.body

нет

match_all запрос

Тело запроса. Тело запроса request body имеет ту же структуру, что и обычно отправляемое в теле запроса 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 поиска. Если ответ не возвращается в течение этого времени, преобразование полезной нагрузки поиска тайм-аутит и завершается ошибкой. Этот параметр переопределяет значения таймаутов по умолчанию.

Поддержка шаблонов

Преобразование полезной нагрузки поиска поддерживает шаблоны Mustache templates. Это может быть частью определения тела или, как альтернатива, ссылкой на существующий шаблон (определенный в файле или сохранённый как скрипт в Elasticsearch).

Например, следующий фрагмент кода показывает поиск, который ссылается на запланированное время наблюдения:

{
  "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 параметров и стандартной модели контекста выполнения наблюдения.

Следующий пример демонстрирует использование шаблонов, которые ссылаются на предоставленные параметры:

{
  "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"
            }
          }
        }
      }
    }
  }
}

© 2023-2025 Elasticsearch
As of September 2024, Elasticsearch is available under a choice of three licenses: the Server Side Public License (SSPL), the Elastic License, or the AGPLv3 (OSI approved).
Elasticsearch and the Elasticsearch logo are trademarks of Elasticsearch B.V., registered in the U.S. and in other countries.
https://www.elastic.co/guide/en/elasticsearch/reference/7.17/transform-search.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API