Создание 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