Абсолютно нет необходимости, чтобы ваши машины имели одинаковые характеристики. Вам понадобятся 3 подходящих для мастера узла не только для непрерывного обновления, но и для высокой доступности в целом.
Если вы хотите масштабировать по горизонтали, вы можете сделать это либо путем создания большего числа индексов для хранения ваших данных, либо настройки в вашем индексе должно быть несколько основных и / или повторяющихся фрагментов. Начиная с версии 7, по умолчанию для новых индексов создается 1 основной и 1 реплика. Единственный подобный индекс на самом деле не позволяет планировать по горизонтали.
Обновление:
Что касается распределения нагрузки и сегмента (куда помещать данные), Elasticsearch by по умолчанию будет просто учитывать объем доступного хранилища. Когда вы запускаете экземпляр Elasticsearch, он анализирует оборудование и настраивает свои пулы потоков (количество потоков и размер очереди) для различных задач соответственно. Таким образом, количество доступных потоков для обработки задач может варьироваться. Если я не ошибаюсь, координирующий узел (узел, получающий внешний запрос) будет распределять запросы на индексирование / запись в циклическом порядке, не принимая во внимание нагрузку. В зависимости от вашей версии Elasticsearch это отличается для запросов поиска / чтения, где координирующий узел будет использовать адаптивный выбор реплики, принимая во внимание время загрузки / отклика различных реплик при распределении запросов.
Кроме того, определение размера и масштабирование - слишком сложная тема c, чтобы на нее можно было ответить всесторонне в простом ответе. Обычно это также включает в себя тестирование для определения пределов / границ одного узла.
Кстати: количество основных шардов по умолчанию было изменено в v7.x Elasticsearch, так как слишком много избыточной защиты было одним из наиболее распространенных проблемы, с которыми сталкивались пользователи Elasticsearch. «Разумный» размер осколка составляет десятки гигабайт.