Модуль для 1С-Битрикс: Управление сайтом

Индекс каталога в OpenSearch

Умный фильтр и список товаров получают данные из поискового индекса вместо базы. Шаблоны сайта дорабатывать не требуется.

Установить в Маркетплейсе

30 дней бесплатно — замерьте на своём каталоге

×15

1,9 с → 0,12 с

Каталог 130 000 товаров, 23 свойства в фильтре, повторные запросы без кеша. Пример замера на одном проекте.

Для кого

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

Если в каталоге несколько тысяч товаров и десяток свойств, модуль не нужен — штатных средств достаточно. Выигрыш появляется на десятках тысяч товаров и растёт вместе с числом свойств в фильтре.

Результаты замера

Один из проектов. Каталог около 130 000 товаров, в разделе около 70 000, 23 свойства в фильтре. Замерялось выполнение компонентов при повторных запросах без кеша.

КомпонентБез модуляС модулемУскорение
Умный фильтр1,90 с0,12 с×15
Список товаров1,17 с0,19 с×6

Выигрыш достигается переносом фильтрации и агрегаций из SQL в поисковый индекс. Чем больше товаров и свойств в каталоге, тем заметнее разница.

Это один замер на одном проекте, а не усреднённая величина. На вашем каталоге результат будет другим — его имеет смысл получить самостоятельно за бесплатный период.

Что делает модуль

Фасетный индекс в OpenSearch

Компонент умного фильтра реализует выбор вариантов свойств и подсчёт количества через OpenSearch — так же, как штатный компонент 1С-Битрикс, но без обращения к базе.

Фильтрация и сортировка списка товаров

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

Прозрачная подмена компонентов

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

Оперативное обновление индекса

Изменения попадают в очередь. Фоновый агент обрабатывает её пакетами по 100 элементов с интервалом 5 секунд и ограничением 30 секунд на итерацию. При недоступности OpenSearch попытки повторяются с нарастающими интервалами: 1 минута, 10 минут, 1 час.

Ночная переиндексация

Каждую ночь в 03:00 для каждого проиндексированного каталога запускается полная фоновая переиндексация — защита от рассинхронизации при пропущенных событиях и сбоях.

Управление составом полей индекса

По умолчанию индексируются свойства умного фильтра и поля ID, SORT, AVAILABLE. Дополнительные поля добавляются флагом в форме свойства либо через событие onIndexFieldScope.

Что происходит, когда индекс недоступен

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

Это происходит в четырёх случаях: сервер OpenSearch недоступен, превышен таймаут запроса, индекс для инфоблока ещё не построен, запрошенное поле отсутствует в индексе.

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

Чего модуль не делает

Модуль входит в ядро выдачи каталога, поэтому его границы описаны здесь, а не в документации мелким шрифтом.

Свойства торговых предложений объединяются на уровне товара

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

Пример из документации: у товара «Футболка» три предложения — (Красный, S), (Красный, M), (Синий, L). При фильтре «Цвет = Красный И Размер = L» этот товар попадёт в выдачу, потому что среди его предложений есть красное и есть размера L.

Не поддерживается проверка по дате активности товара

Не поддерживается управление правами доступа в инфоблоке

Поля вне умного фильтра требуют явного добавления в индекс

Блоки «Хит продаж» и «Спецпредложения» на главной, дополнительные фильтры в каталоге используют поля, которых по умолчанию в индексе нет. Их нужно указать флагом в свойстве или через событие, иначе модуль вернётся к стандартным методам.

Требуется отдельный сервер OpenSearch

Это внешняя инфраструктура, которую нужно развернуть и обслуживать. Модуль её не заменяет и не разворачивает.

Что нужно для установки

PHP8.1 и выше
Платформа1С-Битрикс: Управление сайтом, редакция «Старт» или выше
Внешние сервисысервер OpenSearch, доступный по HTTP или HTTPS с сервера сайта

Ориентировочно для каталога до 100 000 товаров достаточно одного узла с 2 ГБ оперативной памяти. Величина зависит от объёма каталога и числа индексируемых полей.

Как установить

  1. Установить модуль из Маркетплейса 1С-Битрикс стандартным способом.
  2. Указать реквизиты OpenSearch в настройках модуля и нажать «Проверить соединение» — модуль покажет имя кластера и версию.
  3. Запустить первичную индексацию для нужных каталогов в разделе «Контент → OpenSearch индекс».
  4. Включить подмену компонентов на вкладке «Интеграция» — по отдельному переключателю для умного фильтра и списка товаров.
  5. Открыть страницу каталога и убедиться, что внешних отличий нет, а отклик стал быстрее.

Полная инструкция с параметрами подключения, управлением полями индекса и решением проблем — на вкладке «Установка» в карточке Маркетплейса.

Замерьте на своём каталоге

Числа выше получены на одном проекте. Ваш каталог отличается объёмом, числом свойств и нагрузкой, поэтому единственный честный способ узнать выигрыш — поставить модуль и повторить замер.