Перейти к основному содержимому
Версия: 6.1

Действия над индексами

Перемещение в ClickHouse

API для инициации перемещения указанного индекса: POST _ism/move_to_click/<index_name>.

Параметры в пути запроса

NameTypeDescription
index_namestringИмя индекса, который требуется перенести

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

NameTypeDescription
connection_idstringИдентификатор соединения для подключения к ClickHouse, через которое будет производиться перемещение
index_name_patternstringШаблон в виде регулярного выражения для извлечения имени таблицы, обязательно содержащий именованную группу (?<name>)
fetch_sizeintegerРазмер пачки обрабатываемых документов. Рекомендуемое значение - от 10000 до 100000 в зависимости от размера документа
data_scheme_parametersobjectДополнительные настройки, влияющие на взаимодействие с таблицей в ClickHouse

Схема data_scheme_parameters

NameTypeDescription
ttl_intervalstringИнтервал времени жизни документов в таблице в формате interval <count> <time unit> Доступные интервалы (устанавливается на всю таблицу при создании).
ttl_columnstringИмя поля типа datetime, на основе которого будет высчитываться ttl.
cluster_namestringИмя кластера ClickHouse (обязательное поле при replication = true или distributed = true).
replicationbooleanФлаг, отвечающий за создание реплицируемой таблицы при переливке (учитывается, если перемещение инициирует создание новой таблицы).
distributedbooleanФлаг, отвечающий за создание распределенной таблицы при переливки (учитывается, если перемещение инициирует создание новой таблицы).
click_server_settingsobjectСловарь "ключ-значение" для передачи настроек ClickHouse клиенту, который используется для подключения к ClickHouse при перемещении данных.
override_field_typesobjectСловарь для переопределения типов полей исходного индекса на типы ClickHouse, например {"integer_field": "Int64"}. Вложенные поля указываются через точку, например human.age. Если переопределить тип родительского вложенного поля, его дочерние поля не будут созданы отдельно. Вместо этого всё значение будет сохранено в родительском поле как строка типа String, содержащая JSON-структуру.
override_field_date_formatsobjectСловарь для указания форматов дат в полях, значения которых отличаются от стандартного ISO 8601. Для одного поля можно указать один формат, например "dd.MM.yyyy HH:mm:ss". После обработки дата будет сохранена в результирующей таблице ClickHouse в стандартном формате.
view_json_as_stringbooleanФлаг, определяющий, должны ли столбцы типа JSON представляться как столбцы типа String в VIEW. Необходим для версий ClickHouse, которые не поддерживают использование столбцов типа JSON в VIEW.
json_fieldsstring[]Список путей к полям, дочерние поля которых будут перемещены в ClickHouse как единый объект JSON. Необходим для перемещения динамически формируемых полей, например a1, a2, a3.
blackliststring[]Список путей к полям, которые будут проигнорированы и не будут перемещены. Можно указывать префиксы путей, например host.*.
whiteliststring[]Список путей к полям, которые будут перемещены, несмотря на совпадение с черным списком. Можно указывать префиксы путей, например host.*.
timestamp_field_namestringИмя поля, в котором хранится временная метка события. Используется, когда имя поля отличается от @timestamp.
codecstringНазвание кодека, который будет использоваться по умолчанию. Например, ZSTD(3).
table_name_templatestringШаблон для переименования целевой таблицы. В шаблоне можно использовать имя, извлеченное с помощью index_name_pattern через токен {{name}}, например {{name}}-suffix.
source_read_modestringРежим чтения исходного документа. Доступны 3 режима: DEFAULT - режим по умолчанию, при котором исходный документ имеет стандартную структуру JSON; FLAT - используется, если исходный документ был проиндексирован в "плоском" виде, например {"user.firstname": "ivan", "user.lastname": "ivanov"}; MIXED - используется, если часть полей была сохранена в "плоском" виде, а часть — в стандартном вложенном формате.
cb_retries_max_retrieslongМаксимальное количество повторных попыток выполнения задачи после срабатывании Circuit Breaker. После превышения лимита задача завершается с ошибкой.
cb_retries_initial_delay_millislongНачальная задержка перед первой повторной попыткой после срабатывания Circuit Breaker. Значение указывается в миллисекундах.
cb_retries_max_delay_millislongМаксимальная задержка между повторными попытками. Задержка увеличивается с каждой попыткой, но не превышает указанного значения.

Пример запроса

POST _ism/move_to_click/clickhouse_test-600006
{
"connection_id": "TestClick",
"index_name_pattern": "(?<name>.*?)-\\d+",
"fetch_size": 100000,
"data_scheme_parameters": {
"ttl_interval": "interval 30 day",
"cluster_name": "sm_cluster",
"replication": true,
"distributed": true,
"click_server_settings": {
"output_format_binary_write_json_as_string": 1,
"input_format_binary_read_json_as_string": 1
},
"override_field_types": {
"integer_field": "Int64",
"object_field.nested_field1.nested_field2": "String"
},
"override_field_date_formats": {
"date_field1": "dd.MM.yyyy HH:mm:ss",
"date_field2": "MM/dd/yyyy hh:mm:ss a"
},
"view_json_as_string": false,
"json_fields": ["EXECVE"],
"blacklist": ["field1", "field2.*"],
"whitelist": ["field2.subfield1"],
"timestamp_field_name": "timestamp",
"codec": "ZSTD(3)",
"table_name_template": "{{name}}-suffix",
"source_read_mode": "MIXED",
"cb_retries_max_retries": 5,
"cb_retries_initial_delay_millis": 3000,
"cb_retries_max_delay_millis": 45000
}
}

API для остановки запущенного перемещения указанного индекса: POST _ism/move_to_click/<index_name>/cancel.