Elasticsearch

Раздел про Elasticsearch для backend-разработчика: устройство (inverted index, cluster, shards, replicas, mapping, analyzers), Query DSL и relevance scoring (BM25, boosting, aggregations), интеграция со Spring Data Elasticsearch, эксплуатация (ILM, snapshots, hot/warm/cold, sizing, мониторинг).

Зачем для UCP. Elasticsearch — стандартный движок для полнотекстового поиска, фасетов и near-real-time аналитики в UCP-сервисах. Когда WHERE name ILIKE '%query%' в Postgres тормозит, или нужны весовые ranking-запросы — это сюда. Соответствует фазе «Поиск» программы.

Раздел разбит на четыре статьи: основы (устройство), запросы (DSL и relevance), интеграция (Spring Data ES), эксплуатация (ILM/snapshots/sizing). Примеры — на той же паре category + product, что и в PostgreSQL / MongoDB, чтобы было легко сравнивать подходы.

Статьи раздела

  1. Fundamentals: inverted index, cluster, shards, mapping, analyzers — как ES хранит и ищет, почему быстро, что такое анализаторы и зачем mapping.
  2. Query DSL и relevance scoring — match/term/bool, BM25, boosting, фасеты через aggregations, типичные запросы каталога товаров.
  3. Spring Data Elasticsearch: клиент, репозитории, индексацияElasticsearchOperations, ElasticsearchRepository, паттерны индексации, CDC из PostgreSQL/Mongo через Debezium + Kafka.
  4. Operations: ILM, snapshots, hot/warm/cold, sizing, мониторинг — управление жизненным циклом индексов, бэкапы, многоуровневое хранилище, производительность, метрики Prometheus.

Связанное

  • PostgreSQL — основное хранилище. ES обычно дополняет, не заменяет.
  • MongoDB — альтернатива для документных данных. У них разный фокус (Mongo — OLTP, ES — search).
  • Apache Kafka — типичный transport для синхронизации PG/Mongo → ES через CDC.
  • Распределённые паттерны — выбор между dual write и CDC при синхронизации.