Получить доступ

Для чего Elasticsearch обычно используют в backend-системах?

MiddleПолнотекстовый поискElasticsearch
Ещё спрашивают так:
  • Зачем Elasticsearch, если есть база данных?
  • Как синхронизировать Elasticsearch с базой?
Коротко

Для полнотекстового поиска (морфология, опечатки, релевантность), фасетов и фильтров по многим полям, поиска по логам и аналитики. Обычно это модель чтения рядом с основной базой, а не источник истины.

  • Инвертированный индекс: слово → документы
  • Синхронизация из базы: события, CDC (Debezium), периодическая переиндексация
  • Индексация с задержкой (refresh ~1 с) — согласованность в конечном счёте

А ещё Транзакций и JOIN нет; данные денормализуют в документ

Так подсказку видит пользователь sotto на живом собеседовании — за пару секунд, пока вы думаете вслух.

Подробно

Что умеет хорошо:

  • полнотекстовый поиск с анализом текста: морфология (русские словоформы), синонимы, исправление опечаток, ранжирование по релевантности (BM25);
  • фильтры и фасеты по многим полям одновременно («ноутбуки, 16 ГБ, до 100 000 ₽, в наличии») с подсчётом количества по каждому значению;
  • агрегаты и аналитика по большим объёмам, поиск по логам (ELK/OpenSearch);
  • горизонтальное масштабирование шардами и репликами.

Как устроен: инвертированный индекс — для каждого термина список документов, где он встречается. Документ при индексации разбивается анализатором на термины.

Почему не источник истины: нет транзакций между документами, нет JOIN, возможны потери при некоторых сбоях, индексация асинхронна (документ появляется в поиске после refresh, по умолчанию ~1 с). Поэтому основная запись — в базу, а поиск — модель чтения.

Синхронизация: событие об изменении → консьюмер обновляет документ; CDC из журнала базы (Debezium → Kafka → Elasticsearch); полная переиндексация в новый индекс с переключением алиаса. Документ денормализован: товар вместе с названием категории и брендом.

Что хотят услышать

  • Сценарии: полнотекст, фасеты, логи.
  • Инвертированный индекс.
  • Роль модели чтения и почему не источник истины.
  • Способы синхронизации и задержка индексации.

Частые ошибки

  • Хранить в Elasticsearch единственную копию данных.
  • Ожидать, что документ найдётся сразу после записи.

Проверьте себя

Один верный вариант. Подумайте, потом откройте ответ.

Показать варианты и ответ
  • ✗Как основной источник истины для финансовых транзакций
  • ✓Для полнотекстового поиска, фильтрации и аналитики по индексированным документам
  • ✗Для замены foreign keys в PostgreSQL
  • ✗Для компиляции SQL-запросов

Что спросят дальше

  • Что такое inverted index?
  • Как синхронизировать БД и Elasticsearch?

Разбор темы

Связанные вопросы

Закрытая бета

Подсказки на собеседовании — в реальном времени

sotto слышит вопрос интервьюера и показывает короткий ответ и план, как в блоке «Коротко». Оставьте контакт — пришлём доступ и промокод.

  • Промокод на 2 часа — сверх пробных 30 минут
  • Программа для Windows — скачать сразу, войти — через Яндекс ID или VK ID
  • Прямая связь с разработчиком: что улучшить — сделаем