Оптимизация производительности записи
- Чтобы снизить стоимость бэкапа, отключите функцию бэкапа перед импортом данных и включите её после завершения.
- Установить refresh_interval до 120s или более крупное значение. Более крупные сегменты могут уменьшить нагрузку на построение векторного индекса, вызванную слиянием.
- Увеличьте значение native.vector.index_threads (значение по умолчанию равно 4) чтобы увеличить количество потоков для построения векторного индекса.PUT _cluster/settings{"persistent": {"native.vector.index_threads": 8}}
Оптимизация производительности запросов
- После пакетного импорта данных вы можете выполнить forcemerge команду для повышения эффективности запросов.POST index_name/_forcemerge?max_num_segments=1
- Если требуемая off-heap память для векторного индекса превышает лимит circuit breaker, происходит swap-in и swap-out записей индекса, что влияет на производительность запросов. В этом случае можно увеличить порог circuit breaker для off-heap памяти.PUT _cluster/settings{"persistent": {"native.cache.circuit_breaker.cpu.limit": "75%"}}
- Чтобы получить небольшое количество полей, поддерживающих doc values, например keywords и числовые поля, используйте параметр docvalue_fields для указания полей, которые нужно получить. Это помогает уменьшить накладные расходы во время фазы fetch.POST my_index/_search{"size": 2,"stored_fields": ["_none_"],"docvalue_fields": ["my_label"],"query": {"vector": {"my_vector": {"vector": [1, 1],"topk": 2}}}}
Parent topic: Configuring Vector Search for Elasticsearch Clusters