Как настроить кластерasticsearch на одном сервере, чтобы получить лучшую производительность при поиске

Я новичок вasticsearch. У меня есть индекс Elasticsearch около 300 000 наименований. Для каждой из 60 миллионов записей в другой таблице мне нужно сделать сложный запрос к этому индексу ES.

Сейчас это очень медленно (выполнение 1000 запросов заняло бы 200 секунд). Мне нужен совет о том, как настроить мой кластерasticsearch для обработки большого количества запросов.

Мой сервер:

8 core
8GB ram
SSD Hardware

Я хочу настроитьasticsearch для обработки 1000 одновременных поисковых запросов от ruby. (Я хочу искать 1000 предметов параллельно).

Я попытался с конфигурацией по умолчанию

Я думаю, что по умолчанию elasticesearch может обрабатывать только около 10-20 одновременных поисковых запросов. Это использует маленький процессор и оперативную память. Поэтому, думаю, я мог бы это улучшить.

Я мог запустить только 100 потоков из ruby ​​для поиска 1000 элементов, и это занимает около 200 секунд. Если я увеличу до 1000 потоков из ruby, ES вернет сообщение об ошибке тайм-аута.

Я запускаю мастер-узел с

ES_HEAP_SIZE=2G

indices.fielddata.cache.size: 1g 

threadpool:   
   search:
      type: fixed
      size: 200
      queue_size: 400

shares: 5 

replicas: 1

Запуск 100 потоков из рубина для поиска 1000 элементов по-прежнему занимает 200 с.

Я добавляю 3 новых узла в качестве узлов данных на этом сервере.

Запуск 100 потоков из рубина для поиска 1000 элементов по-прежнему занимает 200 с или более.

Я гуглю и читаю из некоторых постов. Люди говорят, что создание большего количества осколков сделает поиск медленным.

Как я могу улучшить свой поисковый запрос?

Большое спасибо!

Ответы на вопрос(1)

Ваш ответ на вопрос