Spec-Zone.ru › Elasticsearch 7
›Руководство по Elasticsearch [7.17] ›REST API ›API преобразований

Создание API преобразования

Инициализирует преобразование.

Запрос

PUT _transform/<transform_id>

Предварительные условия

Требуются следующие привилегии:

  • cluster: manage_transform (роль transform_admin предоставляет эту привилегию)
  • индексы источника: read, view_index_metadata
  • целевой индекс: read, create_index, index.

Описание

Этот API определяет преобразование, которое копирует данные из индексов источника, преобразует их и сохраняет в целевом индексе, ориентированном на сущности. Если для преобразования выбран метод pivot, сущности определяются набором полей group_by в объекте pivot. Если выбран метод latest, сущности определяются значениями поля unique_key в объекте latest.

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

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

Отложенные проверки всегда выполняются при запуске преобразования, за исключением проверок привилегий. При включенных функциях безопасности Elasticsearch преобразование запоминает роли пользователя, создавшего его в момент создания, и использует те же роли. Если эти роли не имеют необходимых привилегий на индексы источника и назначения, преобразование завершается неудачно при попытке выполнить несанкционированные операции.

Для создания преобразования необходимо использовать Kibana или данный API. Не добавляйте преобразование напрямую в индексы .transform-internal* с помощью API индексов Elasticsearch. При включенных функциях безопасности Elasticsearch не предоставляйте пользователям никаких привилегий на индексы .transform-internal*. Если вы использовали преобразования до версии 7.5, также не предоставляйте пользователям привилегий на индексы .data-frame-internal*.

Для преобразования необходимо выбрать либо метод latest, либо pivot; оба метода нельзя использовать в одном преобразовании.

Параметры пути

<transform_id>
(Обязательный, строка) Идентификатор преобразования. Этот идентификатор может содержать строчные буквы, цифры (a-z и 0-9), дефисы и символы подчеркивания. Он имеет ограничение в 64 символа и должен начинаться и заканчиваться буквенно-цифровыми символами.

Параметры запроса

defer_validation
(Необязательный, логический) При значении `true`, отложенные проверки не выполняются. Это поведение может быть желательным, если индекс источника не существует до создания преобразования.
timeout
(Необязательный, время) Период ожидания ответа. Если ответ не получен до истечения срока ожидания, запрос завершается неудачей и возвращается ошибка. По умолчанию 30s.

Тело запроса

description
(Необязательно, строка) Свободное текстовое описание преобразования.
dest

(Обязательно, объект) Назначение для преобразования.

Свойства dest
index
(Обязательно, строка) Индекс назначения для преобразования.

В случае преобразования pivot, отображения индекса назначения выводятся на основе исходных полей, если это возможно. Если требуются альтернативные отображения, используйте API создания индекса перед запуском преобразования.

В случае преобразования latest, отображения никогда не выводятся. Если динамические отображения для индекса назначения нежелательны, используйте API создания индекса перед запуском преобразования.

pipeline
(Необязательно, строка) Уникальный идентификатор интегрированного конвейера.
frequency
(Необязательно, единицы измерения времени) Интервал между проверками изменений в исходных индексах, когда преобразование выполняется непрерывно. Также определяет интервал повторной попытки в случае временных сбоев во время поиска или индексирования. Минимальное значение — 1s, максимальное — 1h. Значение по умолчанию — 1m.
latest

(Обязательно*, объект) Метод latest преобразует данные, находя последний документ для каждого уникального ключа.

Свойства latest
sort
(Обязательно, строка) Указывает поле даты, используемое для определения последних документов.
unique_key
(Обязательно, массив строк) Указывает массив одного или нескольких полей, используемых для группировки данных.
_meta
(Необязательно, объект) Определяет необязательные метаданные преобразования.
pivot

(Обязательно*, объект) Метод pivot преобразует данные путем агрегирования и группировки. Эти объекты определяют поля group by и агрегацию для уменьшения данных.

Свойства pivot
aggregations или aggs

(Обязательно, объект) Определяет способ агрегирования сгруппированных данных. В настоящее время поддерживаются следующие агрегации:

  • Среднее значение
  • Сценарий корзины
  • Селектор корзины
  • Мощность множества
  • Фильтр
  • Геограницы
  • Геоцентр
  • Гео-линейная
  • Максимум
  • Медианное абсолютное отклонение
  • Минимум
  • Отсутствующее значение
  • Перцентили
  • Редкие термины
  • Сценарий
  • Статистика
  • Сумма
  • Термины
  • Лучшие метрики
  • Подсчет значений
  • Взвешенное среднее
group_by

(Обязательно, объект) Определяет, как сгруппировать данные. Можно определить более одной группировки на один свод. В настоящее время поддерживаются следующие группировки:

  • Гистограмма дат
  • Геоплиточная сетка
  • Гистограмма
  • Термины

Свойства группировки могут иметь необязательное свойство missing_bucket. Если оно равно true, документы без значения в соответствующем поле group_by включаются. Значение по умолчанию — false.

max_page_search_size
(Необязательно, целое число) [7.8.0] Устарело в версии 7.8.0. Перемещено в settings.
retention_policy

(Необязательно, объект) Определяет политику хранения для преобразования. Данные, соответствующие определенным критериям, удаляются из целевого индекса.

Свойства retention_policy
time

(Обязательно, объект) Указывает, что преобразование использует поле времени для установки политики хранения.

Свойства time
field
(Обязательно, строка) Поле даты, используемое для расчета возраста документа.
max_age
(Обязательно, единицы измерения времени) Указывает максимальный возраст документа в целевом индексе. Документы, старше указанного значения, удаляются из целевого индекса.
settings

(Необязательный, объект) Определяет необязательные настройки преобразования.

Свойства settings
dates_as_epoch_millis
(Необязательный, булево) Определяет, должны ли даты в выводе записываться в формате ISO (по умолчанию) или как миллисекунды с эпохи. epoch_millis был значением по умолчанию для преобразований, созданных до версии 7.11. Для совместимого вывода установите это значение в true. Значение по умолчанию - false.
docs_per_second
(Необязательный, число с плавающей точкой) Устанавливает ограничение на количество входных документов в секунду. Эта настройка ограничивает преобразование, добавляя время ожидания между запросами поиска. Значение по умолчанию - null, что отключает ограничение.
align_checkpoints
(Необязательный, булево) Указывает, следует ли оптимизировать диапазоны контрольных точек преобразования для производительности. Такая оптимизация может согласовать диапазоны контрольных точек с интервалом гистограммы дат, когда гистограмма дат указана как источник группировки в конфигурации преобразования. В результате будет выполнено меньше обновлений документов в целевом индексе, что повысит общую производительность. Значение по умолчанию - true, что означает, что диапазоны контрольных точек будут оптимизированы, если это возможно.
max_page_search_size
(Необязательный, целое число) Определяет начальный размер страницы для составной агрегации для каждой контрольной точки. При возникновении исключений разрыва цепи размер страницы динамически корректируется до меньшего значения. Минимальное значение - 10, максимальное - 65,536. Значение по умолчанию - 500.
source

(Обязательный, объект) Источник данных для преобразования.

Свойства source
index

(Обязательный, строка или массив) Индексы-источники для преобразования. Это может быть один индекс, шаблон индекса (например, "my-index-*"), массив индексов (например, ["my-index-000001", "my-index-000002"]) или массив шаблонов индексов (например, ["my-index-*", "my-other-index-*"]. Для удаленных индексов используйте синтаксис "remote_name:index_name".

Если какие-либо индексы находятся в удаленных кластерах, то у узла-мастера и по крайней мере одного узла преобразования должна быть роль узла remote_cluster_client.

query
(Необязательный, объект) Условие запроса, которое извлекает подмножество данных из исходного индекса. См. Query DSL.
runtime_mappings
(Необязательный, объект) Определения полей времени выполнения для поиска, которые могут использоваться преобразованием. Для полей времени выполнения поиска все узлы данных, включая удаленные узлы, должны быть версии 7.12 или выше.
sync

(Необязательный, объект) Определяет свойства, необходимые преобразованиям для непрерывной работы.

Свойства sync
time

(Обязательный, объект) Указывает, что преобразование использует поле времени для синхронизации исходного и целевого индексов.

Свойства time
delay
(Необязательный, единицы времени) Задержка времени между текущим временем и временем последних входных данных. Значение по умолчанию - 60s.
field

(Обязательный, строка) Поле даты, используемое для идентификации новых документов в источнике.

В общем случае рекомендуется использовать поле, содержащее маркер времени создания. Если вы используете другое поле, вам может потребоваться установить delay таким образом, чтобы он учитывал задержки передачи данных.

Примеры

Следующее преобразование использует метод pivot:

PUT _transform/ecommerce_transform1
{
  "source": {
    "index": "kibana_sample_data_ecommerce",
    "query": {
      "term": {
        "geoip.continent_name": {
          "value": "Asia"
        }
      }
    }
  },
  "pivot": {
    "group_by": {
      "customer_id": {
        "terms": {
          "field": "customer_id",
          "missing_bucket": true
        }
      }
    },
    "aggregations": {
      "max_price": {
        "max": {
          "field": "taxful_total_price"
        }
      }
    }
  },
  "description": "Maximum priced ecommerce data by customer_id in Asia",
  "dest": {
    "index": "kibana_sample_data_ecommerce_transform1",
    "pipeline": "add_timestamp_pipeline"
  },
  "frequency": "5m",
  "sync": {
    "time": {
      "field": "order_date",
      "delay": "60s"
    }
  },
  "retention_policy": {
    "time": {
      "field": "order_date",
      "max_age": "30d"
    }
  }
}

При создании преобразования вы получите следующие результаты:

{
  "acknowledged" : true
}

Следующее преобразование использует метод latest:

PUT _transform/ecommerce_transform2
{
  "source": {
    "index": "kibana_sample_data_ecommerce"
  },
  "latest": {
    "unique_key": ["customer_id"],
    "sort": "order_date"
  },
  "description": "Latest order for each customer",
  "dest": {
    "index": "kibana_sample_data_ecommerce_transform2"
  },
  "frequency": "5m",
  "sync": {
    "time": {
      "field": "order_date",
      "delay": "60s"
    }
  }
}

© 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/put-transform.html

Spec-Zone.ru

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