Мы в Pyrus довольно активно используем ElasticSearch. И, к сожалению, нет, он не умеет автоматически решардить.
ElasticSearch обычно использует _routing в качестве ключа для определения шарды по конкретному документу. И изменить позже количество шард является невыполнимой задачей, так как связано с переиндексированием всех документов, так как под каждой шардой прячетя индекс Lucene.
В elastic 6 добавили более функциональный механизм split (а в 7 станет более функциональным), позволяющий разделить одну шарду на несколько, что впрочем тоже связано с временным ограничением в записи, а также созданием нового индекса.
Также есть более старый механизм rollover, который позволяет лишь автоматическое создавать новые индексы под одним alias. Что впрочем пригодно в основном для записи логов, но меньше для динамически изменяющегося индексируемого контента.
И тот и другой подход применимы и имеют право на жизнь, но это совсем не то, что хочется называть автоматическим решардингом.
ElasticSearch обычно использует _routing в качестве ключа для определения шарды по конкретному документу. И изменить позже количество шард является невыполнимой задачей, так как связано с переиндексированием всех документов, так как под каждой шардой прячетя индекс Lucene.
В elastic 6 добавили более функциональный механизм split (а в 7 станет более функциональным), позволяющий разделить одну шарду на несколько, что впрочем тоже связано с временным ограничением в записи, а также созданием нового индекса.
Также есть более старый механизм rollover, который позволяет лишь автоматическое создавать новые индексы под одним alias. Что впрочем пригодно в основном для записи логов, но меньше для динамически изменяющегося индексируемого контента.
И тот и другой подход применимы и имеют право на жизнь, но это совсем не то, что хочется называть автоматическим решардингом.