Модуль для 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
Это внешняя инфраструктура, которую нужно развернуть и обслуживать. Модуль её не заменяет и не разворачивает.
Что нужно для установки
| PHP | 8.1 и выше |
|---|---|
| Платформа | 1С-Битрикс: Управление сайтом, редакция «Старт» или выше |
| Внешние сервисы | сервер OpenSearch, доступный по HTTP или HTTPS с сервера сайта |
Ориентировочно для каталога до 100 000 товаров достаточно одного узла с 2 ГБ оперативной памяти. Величина зависит от объёма каталога и числа индексируемых полей.
Как установить
- Установить модуль из Маркетплейса 1С-Битрикс стандартным способом.
- Указать реквизиты OpenSearch в настройках модуля и нажать «Проверить соединение» — модуль покажет имя кластера и версию.
- Запустить первичную индексацию для нужных каталогов в разделе «Контент → OpenSearch индекс».
- Включить подмену компонентов на вкладке «Интеграция» — по отдельному переключателю для умного фильтра и списка товаров.
- Открыть страницу каталога и убедиться, что внешних отличий нет, а отклик стал быстрее.
Полная инструкция с параметрами подключения, управлением полями индекса и решением проблем — на вкладке «Установка» в карточке Маркетплейса.
Замерьте на своём каталоге
Числа выше получены на одном проекте. Ваш каталог отличается объёмом, числом свойств и нагрузкой, поэтому единственный честный способ узнать выигрыш — поставить модуль и повторить замер.