Эта уникальная функция CSS значительно повышает производительность загрузки данных и уменьшает отказы записи за счёт оптимизации bulk‑маршрутизации, ускорения текстовых индексов и ускорения сегментации слов. Рекомендуется использовать эту функцию для кластеров, содержащих большое количество шардов индекса и текстовых индексов, либо имеющих высокий входящий объём данных.
Метод | Описание | Подробности |
|---|---|---|
Оптимизация bulk‑маршрутизации | Согласно правилу маршрутизации по умолчанию в OpenSearch, каждый фрагмент данных в bulk‑запросе направляется в отдельный шард. Когда записывается большой объём данных и существует большое количество шардов индекса, избыточная внутренняя переадресация запросов может вызвать bulk‑отклонения. Кроме того, в кластере большого масштаба эффект длинного хвоста приводит к высокой задержке bulk‑запросов. Можно указать index.bulk_routing элемент конфигурации для включения массовой оптимизации маршрута. Вы можете использовать его для уменьшения количества запросов, которые необходимо пересылать внутри системы. Для кластера с большим количеством шардов эта настройка может улучшить производительность записи и снизить количество массовых отклонений. | |
массовая оптимизация агрегации | Вы можете указать index.aggr_perf_batch_size элемент конфигурации для включения или отключения массовой оптимизации агрегации. Когда массовая оптимизация агрегации включена, документы в массовом запросе записываются пакетами, а не по отдельности. Это помогает снизить нагрузку запросов памяти, запросов блокировок и других вызовов, повышая производительность загрузки данных. | |
Text index acceleration | Вы можете настроить index.native_speed_up для включения или отключения ускорения текстового индекса. Эта настройка оптимизирует процесс индексирования и доступ к памяти, ускоряя построение индекса для текстовых полей (text и keyword). Когда ускорение текстового индекса включено, вы можете настроить index.native_analyzer чтобы также включить ускорение сегментации слов. Для текстов, которым нужна обычная сегментация слов, вы можете использовать анализатор для ускорения сегментации слов. NOTE:
| |
Index merge task optimization | Включение трех перечисленных выше параметров оптимизации увеличит количество задач слияния индексов в кластере. Вы можете настроить index.merge.scheduler.max_thread_count для снижения влияния задач слияния индексов на производительность загрузки данных. Оптимизация заключается в увеличении количества потоков слияния шардов и тем самым смягчает ограничение загрузки данных. |
Только кластеры OpenSearch версии 1.3.6 и 2.19.0 поддерживают улучшение производительности загрузки данных.
Целевой кластер доступен.
Войдите в OpenSearch Dashboards и перейдите на страницу выполнения команд. Кластеры OpenSearch поддерживают несколько методов доступа. В данном материале в качестве примера используется OpenSearch Dashboards для описания процедур операций.
Левая часть консоли — это поле ввода команды, а треугольный значок в её верхнем правом углу является кнопкой выполнения. Правая часть отображает результат выполнения.
Вы можете указать index.bulk_routing элемент конфигурации для включения bulk route optimization. Вы можете использовать его для уменьшения количества запросов, которые необходимо перенаправлять внутри системы. Для кластера с большим количеством шардов эта настройка может улучшить производительность записи и снизить отклонения bulk.
После включения bulk route optimization (то есть, index.bulk_routing установлен в пакет или local_pack), записи данных больше не маршрутизируются на основе _id, и функциональность, связанная с маршрутизацией, может быть затронута. Например, запросы GET на основе ID могут завершиться с ошибкой.
Выполните следующую команду, чтобы включить оптимизацию массовой маршрутизации:
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.