Модуль индексирует товары каталога в OpenSearch для ускорения стандартных компонентов:
- Для смарт-фильтра — фасетный индекс в OpenSearch.
- Для списка товаров — фильтр и сортировка товаров выполняется через OpenSearch.
Шаблоны компонентов не требуют доработки — модуль встраивается прозрачно. При ошибке OpenSearch управление передаётся стандартным методам 1С-Битрикс, сообщение записывается в
лог, а пользователь получает страницу как раньше.
ПроизводительностьПример времени выполнения компонентов при повторных запросах без кеша на одном из проектов (~130 000 товаров в каталоге, ~70 000 товаров в разделе, 23 свойства в фильтре):
| Компонент | Без модуля | С модулем | Ускорение |
| Умный фильтр | 1,9 сек | 0,12 сек | ×15 |
| Список товаров | 1,17 сек | 0,19 сек | ×6 |
Выигрыш достигается за счёт переноса фильтрации и агрегаций из SQL в поисковый индекс OpenSearch. Чем больше товаров и свойств в каталоге, тем заметнее разница.
Ключевые возможностиФасетный индекс в OpenSearchКомпонент «Умный фильтр «ЭкспериментСайт» реализует механики выбора вариантов свойств и подсчета количества с помощью OpenSearch аналогично стандартному компоненту 1С-Битрикс.
Фильтр и сортировка товаров через OpenSearchКомпонент «Элементы раздела «ЭкспериментСайт» получает из OpenSearch идентификаторы элементов на странице и общее количество, позволяя базе данных использовать первичный ключ для загрузки информации о товарах, не выполняя полное сканирование таблицы. Поддержаны пагинация, сортировка по нескольким полям, случайная сортировка, фильтр по полям товара, свойствам, товару и ценам.
Автоматическое обновление индексаМодуль отслеживает события 1С-Битрикс: изменение элементов инфоблока, значений свойств, цен и параметров товара. Записи накапливаются в очереди и пакетно отправляются в OpenSearch фоновым агентом. Помимо оперативного обновления, модуль ежедневно в 03:00 запускает полную переиндексацию каждого каталога. Это гарантирует целостность индекса даже при сбоях или пропущенных событиях.
Простая интеграция- Прозрачная подмена компонентов. Включается в один клик через админку. Стандартные компоненты Битрикс заменяются на версии с OpenSearch. Шаблоны сайта подключаются через символические ссылки — ничего не копируется и не дублируется.
- Автоматический fallback. Если индекс недоступен или ещё не построен для конкретного инфоблока — модуль прозрачно переключается на стандартные запросы 1С-Битрикс. Сайт продолжает работать как раньше.
- Легкое отключение. Каждая подмена компонента — отдельная фича, которую можно включить или выключить независимо.
ОсобенностиУправление полями индексаПо умолчанию в индекс попадают поля для сортировки (идентификатор, сортировка и доступность) и свойства, отображаемые в смарт-фильтре. Если поля нет в индексе, в
лог будет записано сообщение и модуль вернется к стандартным методам 1С-Битрикс.
Для блоков «Хит продаж», «Спецпредложения» на главной странице и дополнительного фильтра в каталоге, может потребоваться указать дополнительные поля для индексации:
- Если используете «Механизм единого управления свойствами», в форме редактировании свойства отметьте флаг «Добавить в индекс OpenSearch».
- С помощью пользовательского события onIndexFieldScope (для разработчиков, подробнее на вкладке «Установка»).
Если требуемое поле ещё не реализовано в модуле, напишите нам на вкладке «Поддержка».
Отбор товаровСвойства торговых предложений хранятся в индексе как параметры товара — значения всех предложений объединяются в массив на уровне родительского товара. Поэтому фильтр с несколькими условиями по свойствам предложений вернёт товары, у которых условия выполняются у разных предложений. Например, у товара «Футболка» три предложения: (Красный, S), (Красный, M), (Синий, L). При фильтрации «Цвет = Красный И Размер = L» этот товар попадёт в выдачу, потому что среди его предложений есть красное и есть размера L.
Не поддерживается проверка по дате активности товара и управления правами доступа в инфоблоке.
Если требуемый фильтр ещё не реализован в модуле, напишите нам на вкладке «Поддержка».
MeilisearchРеализована экспериментальная поддержка Meilisearch — фасетный индекс и отбор товаров. Не поддерживается случайная сортировка и группировка по нескольким полям.
Подготовка окружения# Системные требования
- PHP 8.1 или выше
- 1С-Битрикс: Управление сайтом (актуальные версии)
- Доступ к серверу OpenSearch по HTTP/HTTPS с вашего сайта.
# OpenSearch
Для установки OpenSearch на свой сервер воспользуйтесь
инструкцией на официальном сайте.
Минимальные параметры сервера зависят от объёма каталога. Для каталогов до 100 000 товаров ориентировочно потребуется один узел с 2 ГБ оперативной памяти.
Шаг 1. Установка модуляУстановите модуль из Маркетплейса 1С-Битрикс стандартным способом:
**Настройки → Маркетплейс → Каталог решений** → найдите «Индекс каталога в OpenSearch» → **Установить**.
При установке модуль создаст административные страницы и служебные таблицы.
Шаг 2. Настройка подключения к OpenSearchОткройте
Настройки → Настройки модулей → Индекс каталога в OpenSearch.
# Вкладка «Подключение»
На вкладке «Подключение» введите реквизиты доступа к вашему OpenSearch серверу. Например: Адрес сервера — `
https://localhost:9200`, Имя пользователя — `admin`, Пароль — <Пароль от вашего OpenSearch>, Проверять SSL-сертификат — Нет, Таймаут — 5 секунд.
После заполнения нажмите
«Проверить соединение». При успешном подключении модуль покажет имя кластера и версию OpenSearch.
Нажмите
«Сохранить».
# Вкладка «Индексирование»
Если используете OpenSearch-сервер для нескольких установок 1С-Битрикс, на вкладке Индексирование укажите уникальный префикс. Префикс будет добавлен к имени индекса в OpenSearch.
Для случаев переполнения памяти при индексации уменьшите Количество элементов в одном запросе для индексации. Для ускорения индексации наоборот увеличьте значение.
Шаг 3. Первичная индексацияОткройте
Контент → OpenSearch индекс (или перейдите по ссылке «Индексация» из настроек модуля).
На странице отображается список каталогов с текущим статусом индекса. Нажмите
«Переиндексировать» для нужного инфоблока, после загрузки страницы нажмите
«Индексировать» и дождитесь сообщения о завершении индексации.
Повторите для каждого каталога, который хотите ускорить.
Шаг 4. Интеграция компонентовДля вызова компонентов модуля в шаблоне сайта замените вызов bitrix:catalog.smart.filter и bitrix:catalog.section на experimentsite:facet.catalog.smart.filter и experimentsite:facet.catalog.section.
Для автоматического вызова новых компонентов без редактирования шаблона, в разделе
Настройки → Настройки модулей → Индекс каталога в OpenSearch на вкладке
«Интеграция» включите
«Подмена умного фильтра» и
«Подмена списка товаров» — будут созданы прокси-компоненты /local/components/bitrix/catalog.smart.filter/ и /local/components/bitrix/catalog.section/, и созданы симлинки на оригинальные шаблоны. Чтобы использовать шаблоны без прокси-компонентов, включите
«Симлинки шаблонов умного фильтра» и
«Симлинки шаблонов списка товаров».
>
Важно: если индекс для конкретного каталога ещё не построен, модуль автоматически использует стандартные методы Битрикс. Можно включать подмену можно до завершения индексации — сайт продолжит работать.
Шаг 5. Проверка работыПосле включения подмены компонентов откройте страницу каталога на сайте.
Признаки успешной работы:
- Фильтрация и отображение товаров работают как раньше — внешних отличий быть не должно
- Скорость отклика страницы каталога заметно выросла (особенно при большом количестве товаров и активных фильтрах)
Автоматическое обновление индексаПосле первичной индексации модуль поддерживает индекс в актуальном состоянии автоматически:
# Оперативное обновление (очередь)
При любом изменении товара, свойства или цены модуль добавляет запись в очередь обновлений. Фоновый агент Битрикс обрабатывает очередь пакетами:
- Интервал проверки: каждые 5 секунд
- Размер пакета: 100 элементов
- Лимит времени на одну итерацию: 30 секунд
- При недоступности OpenSearch — автоматические повторные попытки с нарастающими интервалами (1 мин → 10 мин → 1 час)
Изменения в торговых предложениях (SKU) автоматически связываются с родительским товаром — обновляется запись товара, а не отдельного предложения.
# Ночная переиндексация
Для каждого проиндексированного каталога модуль ежедневно в 03:00 запускает фоновую полную переиндексацию. Это защита от рассинхронизации при пропущенных событиях или сбоях.
Переиндексация выполняется пошагово с ограничением по времени (30 секунд на шаг) и не нагружает сервер.
Управление полями индексаПо умолчанию модуль индексирует свойства, отмеченные для умного фильтра, и поля `ID`, `SORT` и `AVAILABLE`. Если нужно добавить дополнительные свойства:
# Через интерфейс Битрикс
Если используете механизм «
Механизм единого управления свойствами», то:
1. Перейдите в раздел Магазин → Каталоги товаров → <Ваш каталог> → Свойства товаров или **Свойства торговых предложений**, выберите нужно свойство.
2. В разделе «Параметры свойства» установите флаг «Добавить в индекс OpenSearch».
Повторите для всех свойств, которые используете в пользовательских фильтрах. После запустите переиндексацию каталога.
# Через событие (для разработчиков)
Подпишитесь на событие `onIndexFieldScope`:
use Bitrix\Main\EventManager;
use Bitrix\Main\EventResult;
EventManager::getInstance()->addEventHandler(
'experimentsite.facet',
'onIndexFieldScope',
function () {
return new EventResult(EventResult::SUCCESS, ['NAME', 'PROPERTY_42', 'PRICE_1']);
}
); |
Обработчик возвращает массив идентификаторов полей, которые нужно добавить в индекс. Для свойств торговых предложений используйте формат OFFER_PROPERTY_<ID> или OFFER_PROPERTY_<CODE>
Решение проблем# Ошибка подключения к OpenSearch
- Проверьте, что сервер OpenSearch запущен и доступен с сервера Битрикс, нажав Проверить соединение в настройках модуля
Настройки → Настройки модулей → Индекс каталога в OpenSearch.- Проверьте логин и пароль
- Если используете самоподписанный сертификат — отключите проверку SSL в настройках модуля
# Сайт работает медленно после включения модуля
- Проверьте
лог ошибок. Если поле отсутствует в индексе, добавьте требуемые, по инструкции «Управление полями индекса» выше.
- Убедитесь, что OpenSearch отвечает быстро (таймаут не более 5 секунд)
- Проверьте сетевую задержку между сервером Битрикс и OpenSearch
- При превышении таймаута модуль автоматически переключится на стандартные методы 1С-Битрикс
Для получения техподдержки пишите на почту:
start@experimentsite.ru