ADR-0006: Elasticsearch вместо OpenSearch

Status: accepted Date: 2026-04-17 Deciders: команда проекта

Контекст

Search layer — критичный компонент. Выбор между Elasticsearch и OpenSearch (fork).

Главные факторы:

  • экспертиза команды (Elasticsearch — есть, OpenSearch — нет);
  • зрелость features (dense_vector, hybrid search);
  • лицензионные нюансы (SSPL у ES 7.11+);
  • общий ecosystem.

Решение

Elasticsearch 8+. Лицензионный риск принимается: мы не конкурируем с Elastic в их нише SaaS и не reselling.

Последствия

Плюсы

  • Минимальный learning curve, команда умеет Elasticsearch.
  • Богатые встроенные аналайзеры, synonyms, dense_vector, hybrid search.
  • _explain API для прозрачности.
  • Отличный tooling (Kibana, ILM).

Минусы

  • SSPL — ограничения на коммерческий SaaS поверх ES. Для нашего продукта — нерелевантно.
  • Лицензия может измениться в будущем; fallback — переход на OpenSearch через compatibility layer (API в основе совместим).

Нейтральные последствия

  • Любые маппинги в schemas/elasticsearch/ должны быть написаны без использования строго проприетарных features, чтобы при необходимости можно было мигрировать.

Рассмотренные альтернативы

OpenSearch

Нет экспертизы команды. Часть features от Elastic ещё нет. Time-to-production больше.

Typesense / Meilisearch

Слабее в faceted + vector + Russian analysis. Не покрывает наши требования.

Ссылки