Сколько нужно number_of_shards в индексе?
Для кластера из одного сервера  и большом кол-ве документов - кол-во шардов == кол-ву CPU cores.
Если есть возможность, разделите индекс на несколько, т.к. для одного сервера это большая база. Если можно как-то поделить данные - по времени, географии, релевантности, то это позволит искать в определенном индексе, а не во всей базе.
заниматься придется - Эластик память жрет что тот лев
обычно 2-3, 2, по-моему, прямо в мануале написано, 3 тоже где-то рядом
а дальше  - от числа RPS клиентов зависит
+ если гнаться за временем ответа (ну типа не больше 1мс) ради СЕО, возникает ситуация, когда склейка с кучи шардов тоже занимает время, и это обуславливает цифу шардов в кластере , например, не более 20
(хз что  у вас за документы, думаю, в вашем случае потолок будет ниже)
ну и все, дальше уже распределение клиентов идет по кластерам