Внедрение Elasticsearch в каталог 1С-Битрикс
Заменили стандартный поиск 1С-Битрикс на отдельный поисковый движок с индексацией товаров и управляемой релевантностью.
От проблемы к результату
Как мы решали конкретную задачу клиента и что получилось.
Проблема
В больших интернет-магазинах поиск постепенно становится одним из главных способов навигации по каталогу. Покупатель не всегда знает точное название товара или нужный раздел — он описывает задачу своими словами, указывает цвет, материал, бренд, назначение или несколько характеристик одновременно.
Стандартный поиск 1С-Битрикс подходит для базовых сценариев, но по мере роста каталога появляются ограничения. Результаты сильно зависят от точного совпадения с названием или другим текстовым полем, а гибко управлять приоритетом артикула, бренда, коллекции и характеристик становится сложно.
Особенно заметна проблема в каталогах с разными типами товаров. Например, для обоев важны цвет, рисунок, материал, помещение и стиль, а для напольных покрытий — класс, толщина, декор и тип соединения. Все эти свойства хранятся в Битриксе, но стандартный поиск не всегда может полноценно использовать их при формировании выдачи.
Полностью переносить интернет-магазин с 1С-Битрикс не требовалось. Нужно было сохранить существующий каталог, административную панель, цены и компоненты сайта, заменив только поисковую часть.
Решение
Мы вынесли поиск в Elasticsearch, а 1С-Битрикс оставили основной платформой и источником товарных данных. Elasticsearch не заменяет каталог — он хранит оптимизированную поисковую копию товаров и отвечает за обработку запросов.
Для каждого товара формируется поисковый документ. В него попадают название, артикул, бренд, коллекция, раздел каталога и характеристики, которые должны участвовать в поиске. Набор полей зависит от категории товара, но все документы приводятся к общей структуре.
Когда пользователь вводит запрос, сайт отправляет его в Elasticsearch. Движок находит совпадения, рассчитывает релевантность и возвращает идентификаторы товаров в нужном порядке. После этого 1С-Битрикс загружает актуальные карточки, цены и остатки и показывает их в привычном интерфейсе каталога.
Такое разделение позволяет независимо развивать поиск, не переписывая интернет-магазин: настраивать веса полей, добавлять синонимы, обработку опечаток, подсказки и аналитику запросов.
Результат
После переноса поиска в Elasticsearch интернет-магазин получает отдельный контур для обработки поисковых запросов. В типовом каталоге после настройки индекса и запросов выдача может формироваться до 5 раз быстрее по сравнению со стандартным поиском по основной базе.
Конкретный прирост зависит от размера каталога, структуры свойств, сложности запросов, серверной конфигурации и качества настройки индекса. Поэтому перед запуском мы фиксируем исходные показатели и проводим сравнительное нагрузочное тестирование.
- 'Целевое время ответа поискового движка — менее 200 мс.
- Поисковые запросы не создают тяжёлую нагрузку на основную базу 1С-Битрикс.
- Изменения каталога становятся доступны в поиске после обновления индекса.
- Производительность можно масштабировать отдельно от основного сайта.
- Релевантность настраивается под реальные запросы покупателей.
Этапы реализации
Анализ структуры каталога
Определяем, какие данные хранятся в разделах, товарах, торговых предложениях и свойствах 1С-Битрикс. Для каждой категории выделяем поля, которые должны участвовать в поиске.
Проектирование поискового документа
Формируем общую структуру документа Elasticsearch: идентификатор товара, название, артикул, бренд, коллекция, категория и набор характеристик. Нормализуем значения, которые хранятся в разных форматах.
Первичная индексация каталога
Получаем товары из 1С-Битрикс, преобразуем их в поисковые документы и загружаем в Elasticsearch. Процесс выполняется пакетами, чтобы не создавать лишнюю нагрузку на сайт.
Синхронизация изменений
Добавляем обновление индекса при изменении товара, цены или характеристик. Для массовых операций предусматриваем фоновую или пакетную переиндексацию.
Настройка релевантности
Назначаем веса полям: точный артикул получает максимальный приоритет, затем название, бренд, коллекция и характеристики. Проверяем выдачу на реальных пользовательских запросах.
Интеграция с выдачей Битрикса
Elasticsearch возвращает идентификаторы и порядок товаров. Битрикс получает по ним актуальные данные и формирует стандартные карточки с ценами, изображениями и ссылками.
До и после
Поиск зависит от штатной индексации и совпадений в текстовых полях. Настройка приоритета артикула, названия, бренда и характеристик ограничена возможностями стандартного механизма.
Товары хранятся в оптимизированном поисковом индексе. Для каждого поля можно настроить собственный вес, правила обработки и влияние на порядок результатов.