Внедрение Elasticsearch в каталог 1С-Битрикс

Заменили стандартный поиск 1С-Битрикс на отдельный поисковый движок с индексацией товаров и управляемой релевантностью.

Elasticsearch1С-БитриксE-commerceПоиск

От проблемы к результату

Как мы решали конкретную задачу клиента и что получилось.

Проблема

В больших интернет-магазинах поиск постепенно становится одним из главных способов навигации по каталогу. Покупатель не всегда знает точное название товара или нужный раздел — он описывает задачу своими словами, указывает цвет, материал, бренд, назначение или несколько характеристик одновременно.

Стандартный поиск 1С-Битрикс подходит для базовых сценариев, но по мере роста каталога появляются ограничения. Результаты сильно зависят от точного совпадения с названием или другим текстовым полем, а гибко управлять приоритетом артикула, бренда, коллекции и характеристик становится сложно.

Особенно заметна проблема в каталогах с разными типами товаров. Например, для обоев важны цвет, рисунок, материал, помещение и стиль, а для напольных покрытий — класс, толщина, декор и тип соединения. Все эти свойства хранятся в Битриксе, но стандартный поиск не всегда может полноценно использовать их при формировании выдачи.

Полностью переносить интернет-магазин с 1С-Битрикс не требовалось. Нужно было сохранить существующий каталог, административную панель, цены и компоненты сайта, заменив только поисковую часть.

Решение

Мы вынесли поиск в Elasticsearch, а 1С-Битрикс оставили основной платформой и источником товарных данных. Elasticsearch не заменяет каталог — он хранит оптимизированную поисковую копию товаров и отвечает за обработку запросов.

Для каждого товара формируется поисковый документ. В него попадают название, артикул, бренд, коллекция, раздел каталога и характеристики, которые должны участвовать в поиске. Набор полей зависит от категории товара, но все документы приводятся к общей структуре.

Когда пользователь вводит запрос, сайт отправляет его в Elasticsearch. Движок находит совпадения, рассчитывает релевантность и возвращает идентификаторы товаров в нужном порядке. После этого 1С-Битрикс загружает актуальные карточки, цены и остатки и показывает их в привычном интерфейсе каталога.

Такое разделение позволяет независимо развивать поиск, не переписывая интернет-магазин: настраивать веса полей, добавлять синонимы, обработку опечаток, подсказки и аналитику запросов.

Результат

После переноса поиска в Elasticsearch интернет-магазин получает отдельный контур для обработки поисковых запросов. В типовом каталоге после настройки индекса и запросов выдача может формироваться до 5 раз быстрее по сравнению со стандартным поиском по основной базе.

Конкретный прирост зависит от размера каталога, структуры свойств, сложности запросов, серверной конфигурации и качества настройки индекса. Поэтому перед запуском мы фиксируем исходные показатели и проводим сравнительное нагрузочное тестирование.

  • 'Целевое время ответа поискового движка — менее 200 мс.
  • Поисковые запросы не создают тяжёлую нагрузку на основную базу 1С-Битрикс.
  • Изменения каталога становятся доступны в поиске после обновления индекса.
  • Производительность можно масштабировать отдельно от основного сайта.
  • Релевантность настраивается под реальные запросы покупателей.
до 5×
быстрее
поисковая выдача после оптимизации
< 200 мс
ответ
целевое время поискового запроса
до 1 сек
актуальность
обновления появляются в поиске
−70%
нагрузка
на основную базу каталога
Как это работает

Этапы реализации

Анализ

Анализ структуры каталога

Определяем, какие данные хранятся в разделах, товарах, торговых предложениях и свойствах 1С-Битрикс. Для каждой категории выделяем поля, которые должны участвовать в поиске.

1
Индекс

Проектирование поискового документа

Формируем общую структуру документа Elasticsearch: идентификатор товара, название, артикул, бренд, коллекция, категория и набор характеристик. Нормализуем значения, которые хранятся в разных форматах.

2
Импорт

Первичная индексация каталога

Получаем товары из 1С-Битрикс, преобразуем их в поисковые документы и загружаем в Elasticsearch. Процесс выполняется пакетами, чтобы не создавать лишнюю нагрузку на сайт.

3
Синхронизация

Синхронизация изменений

Добавляем обновление индекса при изменении товара, цены или характеристик. Для массовых операций предусматриваем фоновую или пакетную переиндексацию.

4
Релевантность

Настройка релевантности

Назначаем веса полям: точный артикул получает максимальный приоритет, затем название, бренд, коллекция и характеристики. Проверяем выдачу на реальных пользовательских запросах.

5
Интерфейс

Интеграция с выдачей Битрикса

Elasticsearch возвращает идентификаторы и порядок товаров. Битрикс получает по ним актуальные данные и формирует стандартные карточки с ценами, изображениями и ссылками.

6

До и после

Стандартный поиск 1С-Битрикс

Поиск зависит от штатной индексации и совпадений в текстовых полях. Настройка приоритета артикула, названия, бренда и характеристик ограничена возможностями стандартного механизма.

1С-Битрикс
Поисковый движок
Стандартная
Релевантность
Ограниченно
Характеристики
Внутри сайта
Масштабирование
Отдельный поиск на Elasticsearch

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

Elasticsearch
Поисковый движок
Настраиваемая
Релевантность
В индексе
Характеристики
Отдельный контур
Масштабирование

Архитектура поиска

1С-Битрикс остаётся основной платформой интернет-магазина. Модуль индексации преобразует данные каталога и передаёт их в Elasticsearch. Поисковый движок возвращает идентификаторы товаров, после чего Битрикс формирует привычную каталожную выдачу.

1С-Битрикс

Основная платформа, административная панель и бизнес-логика интернет-магазина.

Каталог товаров

Разделы, товары, предложения, цены, бренды, коллекции и характеристики.

Модуль индексации

Подготавливает поисковые документы и синхронизирует изменения каталога.

Elasticsearch

Хранит индекс, обрабатывает запросы и рассчитывает релевантность результатов.

Компонент выдачи

Получает товары из Битрикса в порядке, который вернул поисковый движок.

Что было сложно

Технические задачи

Основная работа при внедрении связана с качеством данных, синхронизацией индекса и сохранением порядка результатов.

Неоднородные характеристики

Разные категории используют собственные свойства, типы значений и правила заполнения.

  • Общая схема поискового документа
  • Отдельные поля для категорийных свойств

Нормализация значений

Одинаковые характеристики могут быть записаны в разных форматах или единицах измерения.

  • Очистка данных перед индексацией
  • Приведение значений к единому формату

Актуальность индекса

Изменения товаров и характеристик должны своевременно попадать в Elasticsearch.

  • Обновление изменившихся документов
  • Полная пакетная переиндексация

Сохранение релевантности

Битрикс должен показать карточки в том же порядке, который рассчитал Elasticsearch.

  • Передача упорядоченного списка ID
  • Получение актуальных данных из каталога