Wiki · Технологии разработки
Elasticsearch
Elasticsearch – это поисковый и аналитический движок, который хранит документы в собственном индексе и ищет по ним с учётом морфологии, опечаток и фильтров. Разрабатывает его компания Elastic, в основе движка лежит библиотека Apache Lucene.
Обычно о нём вспоминают, когда встроенный поиск сайта перестаёт справляться. Покупатель пишет «смеситель грое для ванны», а сайт ничего не находит, потому что в каталоге Grohe латиницей. Или поиск по пятидесяти тысячам товаров с фильтрами грузится несколько секунд. Elasticsearch решает обе проблемы, но добавляет в проект ещё один сервер, который нужно обслуживать.
Почему поиск в базе данных и поиск в Elasticsearch дают разный результат
Обычная база вроде MySQL ищет по совпадению строк. Запрос LIKE '%смеситель%' найдёт слово, но не поймёт «смесители», «смесителя» и «смиситель». Elasticsearch заранее разбирает каждый текст на слова, приводит их к начальной форме и складывает в обратный индекс: для каждого слова список документов, где оно встречается. Поиск идёт по этому индексу, а не по всем строкам таблицы.
Опечатки движок ловит нечётким запросом (fuzzy). Документация Elastic объясняет его через расстояние Левенштейна: сколько односимвольных правок нужно, чтобы превратить одно слово в другое. Считаются замена буквы, удаление, вставка и перестановка двух соседних букв. «смиситель» отличается от «смеситель» одной заменой буквы и будет найден.

Кроме поиска, Elasticsearch быстро считает агрегаты: сколько товаров в каждой цене, бренде и цвете при текущем запросе. Это те самые цифры рядом с фильтрами каталога. В базе такие подсчёты по большому каталогу заметно тормозят.
Для каких задач его ставят
- Поиск по каталогу интернет-магазина: опечатки, синонимы, раскладка клавиатуры, подсказки при наборе.
- Фильтры с пересчётом количества товаров на лету. Как фильтры влияют на SEO, разобрано в статье SEO-фильтры.
- Поиск по базе документов, статей, вакансий, объявлений.
- Логи и мониторинг: связка Elasticsearch, Logstash и Kibana (ELK) собирает журналы серверов и показывает их на дашбордах.
Для сайта на сотню страниц всё это лишнее. Если каталог небольшой и поиск находит нужное, отдельный движок только добавит затрат на сервер и поддержку.
Лицензия Elasticsearch и откуда взялся OpenSearch
До 2021 года Elasticsearch распространялся по лицензии Apache 2.0. Затем Elastic перевёл его на SSPL и собственную Elastic License, и Amazon сделал ответвление от последней открытой версии 7.10.2. Так появился OpenSearch: сейчас это проект Linux Foundation под лицензией Apache 2.0.
В августе 2024 года Elastic объявил, что Elasticsearch снова открытый: к двум прежним лицензиям добавили AGPLv3. По странице лицензирования Elastic на октябрь 2026 года исходный код доступен под SSPL 1.0, AGPLv3 и Elastic License v2, вариант AGPL появился начиная с версии 8.16. Часть функций остаётся в платных подписках Elastic.
| Вопрос | Elasticsearch | OpenSearch |
|---|---|---|
| Кто развивает | компания Elastic | сообщество в Linux Foundation |
| Лицензия | SSPL, AGPLv3 или Elastic License v2 на выбор | Apache 2.0 |
| Интерфейс для логов и графиков | Kibana | OpenSearch Dashboards |
| Когда выбирают | нужны функции и поддержка Elastic | важна лицензия Apache 2.0 или его предлагает облачный провайдер |
API у них общего происхождения, но с годами разошлось, поэтому «переехать за вечер» не получится: клиенты и запросы придётся проверить. Условия скачивания, подписок и поддержки Elastic для России уточняйте у вендора.
Как Elasticsearch работает в связке с 1С-Битрикс
Штатный модуль «Поиск» 1С-Битрикс ищет по своим таблицам в базе, а для больших сайтов в курсе разработчика описана настройка внешнего движка Sphinx. Elasticsearch к Битриксу подключают доработкой: товары выгружают в индекс при изменении в каталоге, а поисковую страницу и фильтр переписывают на запросы к движку.

Главный риск такой связки в синхронизации. Если индекс обновляется раз в сутки, покупатель увидит товар, которого уже нет, или не найдёт новый. Поэтому сразу решают, как выгружать изменения цен и остатков, и следят, чтобы индекс не отставал от каталога.
Опечатки, OpenSearch и поиск по каталогу на Elasticsearch
Чем Elasticsearch отличается от OpenSearch?
Elasticsearch развивает компания Elastic, а OpenSearch вырос из его версии 7.10.2 и живёт в Linux Foundation под лицензией Apache 2.0. Задачи у них одни, но API и плагины со временем разошлись, поэтому при переходе запросы и клиенты проверяют заново.
Как Elasticsearch находит товар, если покупатель ошибся в названии?
Через нечёткий поиск: движок перебирает варианты слова, отличающиеся на одну или две буквы, и ищет их в индексе. Синонимы вроде «грое» и Grohe так не поймать, их задают отдельным словарём.
Сколько товаров должно быть в каталоге, чтобы понадобился Elasticsearch?
Точного порога нет. Обычно о нём задумываются, когда каталог исчисляется десятками тысяч позиций, а встроенный поиск теряет запросы с опечатками или фильтры с подсчётом количества заметно замедляют страницу.
Как Elasticsearch связан с PostgreSQL на сайте?
PostgreSQL остаётся главным хранилищем товаров и заказов, а Elasticsearch получает их копию для поиска. Если в базе поменялась цена, её отдельно передают в индекс.
Почему поиск на Elasticsearch показывает товары, которых уже нет?
Индекс Elasticsearch отстаёт от каталога: изменения цен и остатков в него не передаются или передаются редко. Лечится выгрузкой изменений сразу при сохранении товара и регулярной сверкой индекса с базой.
Для чего Elasticsearch используют вместе с Kibana?
Elasticsearch с Kibana используют для логов и мониторинга: Elasticsearch хранит и ищет записи журналов серверов и приложений, а Kibana строит по ним графики и дашборды. Ошибки сайта и всплески нагрузки видны там без ручного просмотра файлов на сервере.
Поиск по каталогу, синхронизацию индекса и фильтры для сайта на 1С-Битрикс делаем при доработке существующего сайта. Если проект уже работает на Elasticsearch, берём его на доработку и поддержку.
Документация Elastic, OpenSearch и 1С-Битрикс
- Блог Elastic: «Elasticsearch is Open Source. Again!» (август 2024 года)
- Elastic: FAQ по лицензированию
- Документация Elasticsearch: Fuzzy query
- OpenSearch: FAQ проекта
- Курс 1С-Битрикс для разработчиков: раздел «Поиск», настройка Sphinx
См. также: PostgreSQL, Каталог товаров, Лог-файл.
Остались вопросы по теме «Elasticsearch»?
Напишите нам в Telegram или MAX. Ответит специалист, который отвечает за эту тему, или руководитель проектов в рабочее время.
Отвечает по темеСергей ЧерняковWeb-разработчикНад статьёй работали
Услуги
Услуги по теме
Посчитайте стоимость проекта за 2 минуты
Калькулятор соберёт смету по нашим тарифам: сайт, дизайн, интеграции и поддержка.
