Эта уникальная CSS‑фича значительно повышает производительность поглощения данных и снижает количество отклонений записей за счёт оптимизации bulk‑маршрутизации, ускорения текстовых индексов и ускорения сегментации слов. Рекомендуется использовать эту функцию для кластеров, содержащих большое количество шардов индексов и текстовых индексов, либо имеющих высокий входящий объём данных.
Метод | Описание | Подробности |
|---|---|---|
Оптимизация bulk‑маршрутизации | Согласно правилу маршрутизации по умолчанию в Elasticsearch, каждый фрагмент данных в bulk‑запросе направляется к различному шарду. При записи большого объёма данных и наличии большого количества шардов индекса избыточная внутренняя переадресация запросов может привести к отклонению bulk‑запросов. Кроме того, в масштабных кластерах эффект длинного хвоста вызывает высокую задержку bulk‑запросов. Вы можете указать index.bulk_routing элемент конфигурации для включения оптимизации массовой маршрутизации. Вы можете использовать его, чтобы уменьшить количество запросов, которые необходимо перенаправлять внутри системы. Для кластера с большим количеством шардов эта настройка может повысить производительность записи и снизить отклонения bulk. | |
Оптимизация агрегирования bulk | Вы можете указать index.aggr_perf_batch_size элемент конфигурации для включения или отключения оптимизации агрегирования bulk. Когда оптимизация агрегирования bulk включена, документы в bulk‑запросе записываются пакетами, а не по отдельности. Это помогает сократить накладные расходы на запросы памяти, запросы блокировок и другие вызовы, улучшая производительность поглощения данных. | |
Ускорение текстового индекса | Вы можете настроить index.native_speed_up для включения или отключения ускорения текстового индекса. Эта настройка оптимизирует процесс индексирования и доступ к памяти, ускоряя построение индекса для текстовых полей (text и keyword). Когда ускорение текстового индекса включено, вы можете настроить index.native_analyzer для включения ускорения сегментации слов также. Для текстов, которым нужна общая сегментация слов, вы можете использовать анализатор для ускорения сегментации слов. | |
Оптимизация задачи слияния индексов | Включение трех вышеуказанных параметров оптимизации увеличит количество задач слияния индексов в кластере. Вы можете настроить index.merge.scheduler.max_thread_count для снижения влияния задач слияния индексов на производительность ingest данных. Оптимизация заключается в увеличении количества потоков слияния шардов, что облегчает ограничение импорта данных. |
Только кластеры Elasticsearch 7.10.2 поддерживают улучшение производительности ingest данных.
Целевой кластер доступен.
Войдите в Kibana и перейдите на страницу выполнения команд. Кластеры Elasticsearch поддерживают несколько методов доступа. В этом разделе Kibana используется в качестве примера для описания процедур эксплуатации.
Левая часть консоли — это поле ввода команд, а треугольный значок в её правом верхнем углу является кнопкой выполнения. Правая часть показывает результат выполнения.
Вы можете указать index.bulk_routing элемент конфигурации для включения bulk route optimization. Вы можете использовать его, чтобы уменьшить количество запросов, которые нужно перенаправлять внутри системы. Для кластера с большим числом shards эта настройка может улучшить производительность записи и снизить отклонение bulk
After bulk route optimization is enabled (that is, index.bulk_routing установлено в pack или local_pack), запись данных больше не маршрутизируется на основе _id, и routing-related functionality may be affected. For example, ID-based GET requests may fail.
Выполните следующую команду для включения bulk route optimization:
PUT my_index{"settings": {"index.bulk_routing": "local_pack"}}
Параметры для index.bulk_routing элемента конфигурации перечислены ниже:
Вы можете указать index.aggr_perf_batch_size элемент конфигурации для включения или отключения оптимизации пакетной агрегации. Когда оптимизация пакетной агрегации включена, документы в bulk‑запросе записываются пакетами, а не по отдельности. Это помогает уменьшить накладные расходы на запросы памяти, запросы блокировок и другие вызовы, повышая производительность загрузки данных.
Выполните следующую команду, чтобы включить оптимизацию пакетной агрегации:
PUT my_index{"settings": {"index.aggr_perf_batch_size": "128"}}
Диапазон значений index.aggr_perf_batch_size элемент конфигурации имеет значение [1, Integer.MAX_VALUE]. Значение по умолчанию — 1, что указывает на то, что оптимизация пакетной агрегации отключена. Если значение больше 1, оптимизация пакетной агрегации включена, значение MIN(bulk_doc_size, aggr_perf_batch_size) указывает размер пакета.
Вы можете настроить index.native_speed_up чтобы включить или отключить ускорение текстового индекса. Эта настройка оптимизирует процесс индексации и доступ к памяти для ускорения построения индекса для текстовых полей (text и keyword). Когда ускорение текстового индекса включено, вы можете настроить index.native_analyzer чтобы также включить ускорение сегментации слов. Для текстов, которым требуется обычная сегментация слов, вы можете использовать анализатор для ускорения сегментации слов.
Выполните следующую команду, чтобы включить ускорение текстового индекса:
PUT my_index{"settings": {"index.native_speed_up": true,"index.native_analyzer": true}}
Значения index.native_speed_up и index.native_analyzer являются true или false. Значение по умолчанию false.
Включение трех вышеуказанных параметров оптимизации увеличит количество задач слияния индексов в кластере. Вы можете настроить index.merge.scheduler.max_thread_count чтобы уменьшить влияние задач слияния индексов на производительность загрузки данных. Оптимизация заключается в увеличении количества потоков слияния шардов, что позволяет смягчить ограничение импорта данных.
Выполните следующую команду, чтобы запустить оптимизацию задач слияния индексов:
PUT my_index{"settings": {"index.merge.scheduler.max_thread_count": 8}}
Диапазон значений index.merge.scheduler.max_thread_count равен [1, node.processors/2]. Значение по умолчанию — 4, рекомендованное значение — 8.