Index и Document
Тема дорожной карты · Elasticsearch
В Elasticsearch индекс — это контейнер верхнего уровня для хранения и поиска связанных данных, аналогичный базе данных в реляционной системе, а документ — отдельная JSON-запись, хранящаяся внутри индекса, аналогичная строке в SQL-таблице. Каждый документ в Elasticsearch имеет уникальный _id в пределах своего индекса, а также системные поля метаданных — _index, _version, _seq_no, — которыми Elasticsearch управляет автоматически. Индекс — это не просто единица хранения: он также определяет, как его документы анализируются и по ним выполняется поиск, через настройки маппинга и анализа, управляющие типами полей и анализаторами текстовых полей. Документы, отправляемые в Elasticsearch через PUT /<index>/_doc/<id>, распределяются по шардам согласно формуле маршрутизации, что автоматически обеспечивает распределение и репликацию каждого документа по кластеру. Взаимосвязь между индексом и документом занимает центральное место в работе Query DSL: поисковые запросы направляются к одному или нескольким индексам и находят документы внутри них по значениям полей, полнотекстовой релевантности или критериям агрегации.
Как это работает
Index и Document: 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+ нод).
Типичные ошибки
Ловушки Index и Document: много маленьких shards ("shard explosion" — cluster state растёт, master перегружен); single-shard индексы, растущие огромными (не параллелятся queries); нет replicas в prod (одна нода вниз = data loss); all-rounder ноды на масштабе (master-задачи заглушены data-queries).