Spec-Zone.ru › Elasticsearch 8
›Elasticsearch Guide [8.17] ›Watcher ›Условия Watcher

Условие сценария Watcher

Условие Watcher, которое оценивает сценарий. По умолчанию язык сценариев — painless. Вы можете использовать любой из языков сценариев, поддерживаемых Elasticsearch, при условии, что язык поддерживает оценку выражений в булевы значения. Обратите внимание, что языки mustache и expression слишком ограничены для использования в этом условии. Дополнительную информацию см. в разделе Сценарии.

Использование условия сценария

Следующий фрагмент настраивает встроенное script условие, которое всегда возвращает true:

"condition" : {
  "script" : "return true"
}

В этом примере сценарий определяется как простая строка. Этот формат фактически является сокращением для определения встроенного сценария. Формальное определение сценария — это объект, который указывает тип сценария и необязательные значения языка и параметров. Если атрибут lang опущен, язык по умолчанию устанавливается на painless. Elasticsearch поддерживает два типа сценариев, встроенные и сохраненные.

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

"condition" : {
  "script" : {
    "source" : "return params.result",
    "lang" : "painless",
    "params" : {
      "result" : true
    }
  }
}

Встроенные сценарии

Встроенные сценарии — это сценарии, которые определяются в самом условии. Следующий фрагмент демонстрирует формальную настройку простого сценария painless, который всегда возвращает true.

"condition" : {
  "script" : {
    "source" : "return true"
  }
}

Сохраненные сценарии

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

"condition" : {
  "script" : {
    "id" : "my_script"
  }
}

Как и в случае с встроенными сценариями, вы также можете указать язык сценария и параметры:

"condition" : {
  "script" : {
    "id" : "my_script",
    "lang" : "javascript",
    "params" : { "color" : "red" }
  }
}

Доступ к данным полезной нагрузки наблюдения

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

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

{
  "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. Например:

java.time.ZonedDateTime.parse(@timestamp)

В контексте наблюдения вы можете использовать следующие переменные:

Имя Описание

ctx.watch_id

Идентификатор наблюдения, которое в настоящее время выполняется.

ctx.execution_time

Время начала выполнения этого наблюдения.

ctx.trigger.triggered_time

Время срабатывания этого наблюдения.

ctx.trigger.scheduled_time

Время, когда это наблюдение должно было сработать.

ctx.metadata.*

Любая метаданные, связанные с наблюдением.

ctx.payload.*

Данные полезной нагрузки, загруженные входом наблюдения.

© 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/8.17/condition-script.html

Spec-Zone.ru

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