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.
_explainAPI для прозрачности.- Отличный 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. Не покрывает наши требования.
Ссылки
../schemas/elasticsearch/README.md- Principles: P8.