Во многом благодаря помощи местных обитателей разобрался в терминологии Elasticsearch/opensearch.
Но вопрос в тонкостях настройки. Ситуация - есть один железный сервер. 2 проца. в общем сложности 20 ядер. Задача закинуть туда много текста - около 250 млн записей. Каждая из которых пару абзацев. Одновременных пользователей будет мало. Обычно не больше однго двух. Т.е. задача ускорить поиск но не throughput
Есть ли смысл запускать Elasticsearch/opensearch на одном физическом сервере в режиме нескольких worker/data nodes - через docker compose? Или если один физический сервер то можно и одной обойтись и наоборот накладные расходы будут меньше?
Я правильно ли понимаю что один шард работает на одном ядре и не больше. Или это одна дата нода работает на одном ядре. Где то читал apache lucene работает только в одном потоке. И что является инстасом apache lucene? Шард или нода?
Какое соотношение нужно нод/ к шардам?
- Есть ли смыл на одном физическом сервере несколько datanodes делать docker compose? Или есть смысл чтобы уменьшить колличество используемой памяти на каждой ноде?
- Сколько нужно указывать шардов? нужно ли их делать равными количеству дата нод? Или больше? Какое сотношение датанод к шардам? Если смысл делать шардов больше чем дата нод. Как это расчитывать по соотношению к процессорным ядрам?
- Есть ли смысл делать replica больше 0 если все находится на одном физическом сервере (и соответсвеено если физический сервер умер то умрут и данные и как бы это не в приоритете, и оперативки лишней нет) Увеличивает ли колличество реплик скорость поиска? Или колличество реплик увеличивает throughput (т.е. одновременные запросы) Но если пользуется один пользователь то пофиг? Ну и правильно что replica 1 - ровно в два раза увеличивает потребление ОЗУ? (по всем датанодам)
- Какой параметр памяти JAVA стоит запускать.
Я так понимаю что шард - это отдельный экземпляр apache lucene.