Spec-Zone.ru › Elasticsearch 7
›Elasticsearch Guide [7.17] ›Ingest pipelines ›Ingest processor reference

Процессор сценариев

Выполняет встроенный или сохранённый скрипт над поступающими документами. Скрипт выполняется в контексте ingest.

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

Таблица 35. Параметры сценария

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

lang

нет

"painless"

Язык сценария.

id

нет

-

Идентификатор сохранённого сценария. Если параметр source не указан, этот параметр обязателен.

source

нет

-

Встроенный сценарий. Если параметр id не указан, этот параметр обязателен.

params

нет

-

Объект, содержащий параметры для сценария.

description

нет

-

Описание процессора. Полезно для описания цели процессора или его конфигурации.

if

нет

-

Условное выполнение процессора. См. Условное выполнение процессора.

ignore_failure

нет

false

Игнорировать ошибки для процессора. См. Обработка ошибок в конвейере.

on_failure

нет

-

Обработать ошибки для процессора. См. Обработка ошибок в конвейере.

tag

нет

-

Идентификатор процессора. Полезен для отладки и метрик.

Доступ к полям исходных данных

Процессор сценариев анализирует поля JSON исходных данных каждого входящего документа в набор карт, списков и примитивов. Для доступа к этим полям со скриптом Painless используйте оператор доступа к карте: ctx['my-field']. Вы также можете использовать сокращённую запись ctx.<my-field>.

Процессор сценариев не поддерживает синтаксисы ctx['_source']['my-field'] или ctx._source.<my-field>.

Следующий процессор использует сценарий Painless для извлечения поля tags из поля исходных данных env.

POST _ingest/pipeline/_simulate
{
  "pipeline": {
    "processors": [
      {
        "script": {
          "description": "Extract 'tags' from 'env' field",
          "lang": "painless",
          "source": """
            String[] envSplit = ctx['env'].splitOnToken(params['delimiter']);
            ArrayList tags = new ArrayList();
            tags.add(envSplit[params['position']].trim());
            ctx['tags'] = tags;
          """,
          "params": {
            "delimiter": "-",
            "position": 1
          }
        }
      }
    ]
  },
  "docs": [
    {
      "_source": {
        "env": "es01-prod"
      }
    }
  ]
}

Процессор производит:

{
  "docs": [
    {
      "doc": {
        ...
        "_source": {
          "env": "es01-prod",
          "tags": [
            "prod"
          ]
        }
      }
    }
  ]
}

Доступ к полям метаданных

Вы также можете использовать процессор сценариев для доступа к полям метаданных. Следующий процессор использует сценарий Painless для установки _index входящего документа.

POST _ingest/pipeline/_simulate
{
  "pipeline": {
    "processors": [
      {
        "script": {
          "description": "Set index based on `lang` field and `dataset` param",
          "lang": "painless",
          "source": """
            ctx['_index'] = ctx['lang'] + '-' + params['dataset'];
          """,
          "params": {
            "dataset": "catalog"
          }
        }
      }
    ]
  },
  "docs": [
    {
      "_index": "generic-index",
      "_source": {
        "lang": "fr"
      }
    }
  ]
}

Процессор изменяет _index документа с fr-catalog на generic-index.

{
  "docs": [
    {
      "doc": {
        ...
        "_index": "fr-catalog",
        "_source": {
          "lang": "fr"
        }
      }
    }
  ]
}

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

Spec-Zone.ru

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