Shards и Replicas
Тема дорожной карты · Elasticsearch
Шарды и реплики — это два ключевых механизма, делающих Elasticsearch распределённым, отказоустойчивым поисковым движком, способным масштабироваться за пределы возможностей одного узла. Шард — это отдельный экземпляр Lucene, хранящий часть документов индекса; когда у индекса задано number_of_shards: 5, Elasticsearch распределяет пять основных шардов по доступным узлам данных так, чтобы полный индекс обслуживался параллельно. Реплика шарда — это точная копия основного шарда, хранящаяся на другом узле; она обеспечивает как высокую доступность (если узел с основным шардом выходит из строя, реплика повышается до основного), так и рост пропускной способности при поиске (запросы на чтение могут обслуживаться как основным шардом, так и любой репликой). Количество основных шардов задаётся при создании индекса и не может быть изменено впоследствии (Shrink API является деструктивным исключением), тогда как число реплик можно корректировать во время работы через PUT /<index>/_settings с параметром index.number_of_replicas. Выбор правильного количества шардов и реплик в Elasticsearch требует баланса между параллелизмом запросов, накладными расходами на кучу JVM на каждый шард (примерно 20–50 МБ) и требованиями к отказоустойчивости для конкретной нагрузки и размера кластера.
Как это работает
Shards и Replicas: Index — логическая коллекция документов (аналог DB-таблицы). Документы — JSON, идентифицируются _id. Индексы делятся на Shards (Lucene-индексы) — primary + replica копии, распределённые по нодам. Inverted Index — on-disk структура, делающая full-text search быстрым: term → список документов с ним. Роли нод: master (cluster state), data (хранение + queries), ingest (pipelines), coordinating (роутинг запросов). Современные кластеры часто используют dedicated роли для стабильности.
Когда применять
Планируйте shard count ДО индексации — primary shards не меняются после создания (только через reindex). Целитесь в 10-50GB на shard. Replicas: минимум 1 в prod (HA + read throughput). Для time-series (logs) — ILM + rollover вместо огромных fixed-индексов. Dedicate master + data + coordinator роли на масштабе (50+ нод).
Типичные ошибки
Ловушки Shards и Replicas: много маленьких shards ("shard explosion" — cluster state растёт, master перегружен); single-shard индексы, растущие огромными (не параллелятся queries); нет replicas в prod (одна нода вниз = data loss); all-rounder ноды на масштабе (master-задачи заглушены data-queries).
Связанные понятия
Полезные ресурсы
Проверить знания (1)
Загрузка вопросов…