Действия над индексами
Перемещение в ClickHouse
API для инициации перемещения указанного индекса: POST _ism/move_to_click/<index_name>.
Параметры в пути запроса
| Name | Type | Description |
|---|---|---|
index_name | string | Имя индекса, который требуется перенести |
Параметры в теле запроса
| Name | Type | Description |
|---|---|---|
connection_id | string | Идентификатор соединения для подключения к ClickHouse, через которое будет производиться перемещение |
index_name_pattern | string | Шаблон в виде регулярного выражения для извлечения имени таблицы, обязательно содержащий именованную группу (?<name>) |
fetch_size | integer | Размер пачки обрабатываемых документов. Рекомендуемое значение - от 10000 до 100000 в зависимости от размера документа |
data_scheme_parameters | object | Дополнительные настройки, влияющие на взаимодействие с таблицей в ClickHouse |
Схема data_scheme_parameters
| Name | Type | Description |
|---|---|---|
ttl_interval | string | Интервал времени жизни документов в таблице в формате interval <count> <time unit> Доступные интервалы (устанавливается на всю таблицу при создании). |
ttl_column | string | Имя поля типа datetime, на основе которого будет высчитываться ttl. |
cluster_name | string | Имя кластера ClickHouse (обязательное поле при replication = true или distributed = true). |
replication | boolean | Флаг, отвечающий за создание реплицируемой таблицы при переливке (учитывается, если перемещение инициирует создание новой таблицы). |
distributed | boolean | Флаг, отвечающий за создание распределенной таблицы при переливки (учитывается, если перемещение инициирует создание новой таблицы). |
click_server_settings | object | Словарь "ключ-значение" для передачи настроек ClickHouse клиенту, который используется для подключения к ClickHouse при перемещении данных. |
override_field_types | object | Словарь для переопределения типов полей исходного индекса на типы ClickHouse, например {"integer_field": "Int64"}. Вложенные поля указываются через точку, например human.age. Если переопределить тип родительского вложенного поля, его дочерние поля не будут созданы отдельно. Вместо этого всё значение будет сохранено в родительском поле как строка типа String, содержащая JSON-структуру. |
override_field_date_formats | object | Словарь для указания форматов дат в полях, значения которых отличаются от стандартного ISO 8601. Для одного поля можно указать один формат, например "dd.MM.yyyy HH:mm:ss". После обработки дата будет сохранена в результирующей таблице ClickHouse в стандартном формате. |
view_json_as_string | boolean | Флаг, определяющий, должны ли столбцы типа JSON представляться как столбцы типа String в VIEW. Необходим для версий ClickHouse, которые не поддерживают использование столбцов типа JSON в VIEW. |
json_fields | string[] | Список путей к полям, дочерние поля которых будут перемещены в ClickHouse как единый объект JSON. Необходим для перемещения динамически формируемых полей, например a1, a2, a3. |
blacklist | string[] | Список путей к полям, которые будут проигнорированы и не будут перемещены. Можно указывать префиксы путей, например host.*. |
whitelist | string[] | Список путей к полям, которые будут перемещены, несмотря на совпадение с черным списком. Можно указывать префиксы путей, например host.*. |
timestamp_field_name | string | Имя поля, в котором хранится временная метка события. Используется, когда имя поля отличается от @timestamp. |
codec | string | Название кодека, который будет использоваться по умолчанию. Например, ZSTD(3). |
table_name_template | string | Шаблон для переименования целевой таблицы. В шаблоне можно использовать имя, извлеченное с помощью index_name_pattern через токен {{name}}, например {{name}}-suffix. |
source_read_mode | string | Режим чтения исходного документа. Доступны 3 режима: DEFAULT - режим по умолчанию, при котором исходный документ имеет стандартную структуру JSON; FLAT - используется, если исходный документ был проиндексирован в "плоском" виде, например {"user.firstname": "ivan", "user.lastname": "ivanov"}; MIXED - используется, если часть полей была сохранена в "плоском" виде, а часть — в стандартном вложенном формате. |
cb_retries_max_retries | long | Максимальное количество повторных попыток выполнения задачи после срабатывании Circuit Breaker. После превышения лимита задача завершается с ошибкой. |
cb_retries_initial_delay_millis | long | Начальная задержка перед первой повторной попыткой после срабатывания Circuit Breaker. Значение указывается в миллисекундах. |
cb_retries_max_delay_millis | long | Максимальная задержка между повторными попытками. Задержка увеличивается с каждой попыткой, но не превышает указанного значения. |
Пример запроса
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.