intermediate

Elasticsearch

Используйте Elasticsearch для distributed search с shards, mappings, analyzers, aggregations и operational cost.

Elasticsearch — распределённый поисковый и аналитический движок на Lucene. Документы живут в индексах, разбитых на шарды; каждый шард — отдельный Lucene-индекс с инвертированным индексом. Mapping задаёт типы полей и анализаторы; запросы идут по инвертированному индексу и возвращают документы с оценкой релевантности и агрегации.

| Понятие | Роль | |---------|------| | Index | Логическое пространство документов | | Shard | Единица распределения и параллелизма | | Mapping | Схема: типы, анализаторы, multi-fields | | Analyzer | Конвейер токенизации при индексации и поиске | | Refresh | Делает свежие записи видимыми для поиска (почти в реальном времени) |

Типичная архитектура: приложение пишет в PostgreSQL как источник истины, синхронизирует денормализованные search-документы через CDC или batch, а пользовательский поиск и фильтры обслуживает Elasticsearch.

					PUT /products/_doc/1
{ "title": "Беспроводная клавиатура", "brand": "Acme", "price": 79 }
				

На интервью: объясните, зачем search выносится в отдельное хранилище, как шарды масштабируют чтение и запись, чем обходится смена mapping при reindex, и какие операционные риски (heap, merge сегментов, yellow/red состояние кластера).

Типовые ошибки: использовать Elasticsearch как основную БД; сюрпризы dynamic mapping на новых полях; огромные документы; пять шардов по умолчанию на маленьком кластере; игнорировать refresh interval при write-heavy нагрузке; агрегации по high-cardinality полям без фильтров.

Компромисс — богатая релевантность поиска и быстрая фильтрация против операционной сложности, eventual consistency с источником и стоимости reindex при смене схемы.

Чеклист:

  • Назовите index, shard, replica, mapping, analyzer.
  • Разделите source of truth и search index.
  • Опишите путь синхронизации и допустимую устарелость.
  • Упомяните refresh, scoring и лимиты агрегаций.
  • Отметьте здоровье кластера и стратегию reindex.