Перейти к основному содержимому

Manticore — установка и подключение

Начиная с 0.1.33, на вкладке «Поисковый движок» доступны MySQL — встроенный и Manticore + MySQL. Обновление сохраняет выбранный движок. С 0.1.34 доступна отдельная кнопка установки Manticore от пользователя PHP; открытие страницы и обновление модуля её не запускают.

Manticore отбирает кандидатов, а модуль проверяет точные совпадения, режимы полей, сортировку и права через MySQL. Основной индекс остаётся необходимым. Артикулы с ведущими нулями, синонимы, частичный поиск и исправление раскладки работают по прежним правилам. Морфология и исправление опечаток Manticore в этом варианте не включаются.

Актуальная инструкция относится к 1.0.1. Обновляйте модуль по инструкции для 1.x; вкладки «Обновления» Zorka в этой версии нет. Установка Manticore по-прежнему запускается отдельной кнопкой.

Что потребуется​

  • Установленный модуль zorka.search версии 0.1.33 или новее и построенный индекс модуля. Для установки Manticore из админки требуется 0.1.34. Установка модуля.
  • Для установки из админки (0.1.34): Linux x86_64, PHP cURL/zlib/POSIX, разрешённый proc_open, доступ к /proc, запись и исполнение в каталоге установки. PHP работает от обычного пользователя, не root. Для системной службы нужен администратор сервера.
  • HTTP API Manticore, доступное из PHP сайта. Проверена Manticore 29.9.0 на Ubuntu 24.04 и в сценарии установки из админки на BitrixVM 9.0.9 / AlmaLinux 9.7. Другие сочетания требуют проверки на вашем стенде.
  • Отдельное имя таблицы для каждой установки Битрикса. Модуль предложит имя вида zs_…; не используйте одну таблицу для двух установок.

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

Многосайтовость Битрикса​

Для нескольких сайтов (SITE_ID) в одной установке Битрикса используется одна таблица Manticore. Полный поиск и подсказки фильтруются по текущему сайту, привязке инфоблоков и правам доступа. Общий каталог доступен на тех сайтах, к которым он привязан; URL формируются для соответствующего сайта. Дополнение подсказок товарами найденных разделов проходит те же проверки.

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

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

Проверено на двух сайтах в одной базе с отдельными, общими и закрытыми каталогами: полный поиск, подсказки, URL и дополнение товарами разделов. Проверки выполнены с поисковыми модулями Битрикса 24.0.0 и 25.200.0.

Установка из админки без root — с 0.1.34​

На вкладке «Поисковый движок» откройте блок «Manticore на этом сервере» и нажмите «Установить и включить». Модуль проверяет окружение и каталог, скачивает закреплённую Manticore 29.9.0 по HTTPS, проверяет SHA-256 пакета и извлечённого бинарника, запускает её от пользователя PHP, настраивает подключение и готовит индекс. Пакетные менеджеры, sudo, Docker и установочные скрипты пакетов не запускаются. Нужны исходящие HTTPS-запросы к repo.manticoresearch.com и доступные системные библиотеки.

Предусмотрены сборки x86_64 для Debian 11–13, Ubuntu 22.04/24.04 и AlmaLinux/Rocky/RHEL/CentOS 8–9. Выбор пакета не гарантирует поддержку конкретного хостинга: noexec, open_basedir, отключённые функции, нехватка библиотек и запрет фоновых процессов могут остановить установку. Бинарник проверяется запуском до включения поиска. Buddy не запускается: текущая интеграция использует основной HTTP API.

Загрузка идёт порциями по 1 МиБ. Если вкладка закрыта или соединение прервалось, повторно нажмите ту же кнопку. Уже готовый индекс не перестраивается повторно. Для установки нужно минимум 192 МиБ свободного места; объём индекса учитывается отдельно. Данные нескольких установок находятся в разных каталогах; выбирается свободный loopback-порт, который сохраняется для следующих запусков. Порт не обеспечивает изоляцию от других пользователей того же сервера; такой режим предназначен для доверенного серверного окружения.

Проверено на BitrixVM​

9 октября 2026 года этот пакет прошёл установку через настоящую админку BitrixVM 9.0.9, AlmaLinux 9.7, PHP 8.2.30. Проверены поиск магазина и CRM, остановка/запуск Manticore, возврат к MySQL, восстановление через cron после перезагрузки VM, удаление и повторная установка с сохранением данных. Каталог Manticore находился вне публичного корня сайта; процесс работал от bitrix, HTTP API слушал только loopback.

В проверенном образе cURL и POSIX были установлены, но отключены в PHP. До их включения модуль блокировал установку. Администратор сервера включил расширения в PHP, обслуживающем сайт, и перезапустил Apache. После этого установка самой Manticore выполнялась из админки от bitrix, без root, sudo или Docker. Проверяйте именно PHP сайта: набор расширений CLI может отличаться. Модуль не включает серверные расширения автоматически.

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

Каталог и проверка защиты​

По умолчанию модуль проверяет родительский каталог сайта и домашний каталог пользователя PHP. Если они недоступны, пробует upload и корень сайта. В каждом случае создаётся собственный случайный подкаталог с правами 0700. Можно указать другой существующий родительский каталог перед первой установкой. Каталог не помещается внутрь папки модуля и не заменяется при обновлении.

Если хранилище попадает внутрь публичного каталога, модуль создаёт запреты для Apache/IIS и проверяет фактический доступ без cookies и авторизации. Сначала публичный контрольный файл должен вернуть точное случайное содержимое; затем тестовые файлы разных типов и уже существующие служебные файлы должны вернуть 403/404. Проверяются текущий адрес и адреса активных сайтов, объявленные в Битриксе, со схемой текущего адреса. Содержимое контрольного файла не передаётся в URL. Редиректы, таймауты, общий 404, страницы авторизации и неоднозначные ответы отклоняются. Файлы проверки удаляются после запроса.

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

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

Защита проверяется перед скачиванием, распаковкой, запуском и при работе агента/cron. При провале повторной проверки собственный процесс останавливается, автоматический перезапуск отключается, поиск использует MySQL. Если подтверждение защиты каталога внутри сайта старше пяти минут, поисковые запросы переходят на MySQL до новой проверки. Это не устраняет промежуток между изменением конфигурации веб-сервера и следующей проверкой.

Запуск, остановка и восстановление​

Кнопки «Запустить», «Остановить», «Проверить защиту», «Обновить статус» и «Журнал» управляют только этим экземпляром. Перед остановкой проверяются PID, исполняемый файл, конфигурация в аргументах процесса и его пользователь; чужая Manticore и чужой порт не изменяются. Остановка сохраняет данные. Изменённый бинарник или конфиг не запускаются.

Если доступен пользовательский crontab, модуль добавляет отдельный блок zorka.search manticore с проверкой раз в минуту. Существующие задания сохраняются. Если cron недоступен, интерфейс сообщает об этом, а проверку выполняет агент Битрикса. При агентах на посещениях восстановление после перезагрузки зависит от обращения к сайту; постоянный cron нужен для независимого восстановления. Ручная остановка отключает автоматический перезапуск.

При удалении модуля останавливается только созданный им процесс и удаляется только его блок автозапуска. Бинарник, конфигурация, журналы и индекс сохраняются в указанном каталоге. Если убрать cron не удалось, при удалении выводится сообщение. Журналы находятся в подкаталоге log; интерфейс показывает последние 8 КиБ каждого файла. Следите за свободным местом и обслуживайте журналы согласно правилам вашего сервера.

Вариант 1: Docker​

На сервере с установленным Docker:

docker run -d --name zorka-manticore --restart unless-stopped \
-p 127.0.0.1:9308:9308 \
-v zorka-manticore-data:/var/lib/manticore \
manticoresearch/manticore:29.9.0
curl http://127.0.0.1:9308/cli -d 'SHOW TABLES'

Данные сохраняются в томе zorka-manticore-data. Порт опубликован только на loopback хоста. Это соответствует рекомендации Manticore для Docker.

Если PHP работает в контейнере, 127.0.0.1 внутри него указывает на контейнер PHP. Соедините сервисы закрытой Docker-сетью и используйте имя сервиса Manticore, например http://manticore:9308.

Вариант 2: пакеты ОС, в том числе BitrixVM​

Команды ниже предназначены для новой отдельной установки. Если Manticore уже обслуживает другие проекты, не заменяйте её конфигурацию: согласуйте подключение с администратором и создайте отдельную таблицу.

Сначала проверьте ОС: cat /etc/os-release. Для BitrixVM выбирайте инструкции по фактической ОС, а не по версии Битрикса. Списки поддерживаемых систем и пакеты опубликованы в руководстве Manticore.

AlmaLinux / Rocky Linux / RHEL-совместимая BitrixVM: проверьте поддержку конкретного дистрибутива в официальной инструкции. Для поддерживаемой RPM-системы:

sudo dnf install https://repo.manticoresearch.com/manticore-repo.noarch.rpm
sudo systemctl mask manticore.service
sudo dnf install manticore

Debian / Ubuntu:

wget https://repo.manticoresearch.com/manticore-repo.noarch.deb
sudo apt install ./manticore-repo.noarch.deb
sudo apt update
sudo systemctl mask manticore.service
sudo apt install manticore

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

Для новой службы задайте в /etc/manticoresearch/manticore.conf:

searchd {
listen = 127.0.0.1:9308:http
log = /var/log/manticore/searchd.log
pid_file = /run/manticore/searchd.pid
data_dir = /var/lib/manticore
}

Затем:

sudo systemctl unmask manticore.service
sudo systemctl enable --now manticore
sudo systemctl status manticore --no-pager
curl http://127.0.0.1:9308/cli -d 'SHOW TABLES'

Если служба не запускается, проверьте journalctl -u manticore -n 100 --no-pager и права пользователя службы на каталоги данных и журналов. Установка службы выполняется с системными правами; PHP сайта и задания модуля на BitrixVM работают от пользователя bitrix.

Подключение в модуле​

  1. Откройте zorka.search → Поисковый движок.
  2. Выберите Manticore + MySQL. Укажите адрес HTTP API http://127.0.0.1:9308 и отдельную таблицу этой установки Битрикса.
  3. Нажмите «Сохранить движок», затем «Проверить подключение». Эти действия используют сохранённые настройки; общая кнопка сохранения других вкладок не меняет подключение.
  4. Нажмите «Подготовить индекс Manticore». Модуль создаст свою RT-таблицу и перенесёт значения из существующего индекса. До завершения поиск использует MySQL.
  5. Дождитесь сообщения «Индекс Manticore готов». Проверьте известный артикул, раздел и запрос в подсказках и полном поиске.

Если браузер закрыт или запрос прерван, используйте «Продолжить синхронизацию». Изменение адреса или таблицы требует новой подготовки. Если добавили поля, сначала выполните обычную переиндексацию модуля: подготовка Manticore не читает отсутствующие в основном индексе значения.

Порт 9308 нельзя публиковать в интернет. Для отдельного сервера используйте закрытую сеть и firewall с разрешением только серверу сайта. В этой версии форма не поддерживает пароль HTTP-прокси; защищённая сеть обязательна. Успех curl от root не гарантирует доступ из PHP — используйте кнопку проверки в модуле.

Обновление индекса и cron​

Новые и изменённые товары и разделы попадают в обычную очередь модуля, затем — в очередь Manticore. Доставка выполняется агентом Битрикса. Если агенты переведены на cron, убедитесь, что они запускаются. Изменения, ещё не переданные в Manticore, учитываются через основной индекс; очередь сохраняется при сбое.

Для первой подготовки большого каталога можно выполнить из CLI:

sudo -u bitrix /usr/bin/php /home/bitrix/www/bitrix/modules/zorka.search/tools/manticore.php \
/home/bitrix/www --prepare --max-time=0

Пути приведены для обычной BitrixVM; проверьте корень сайта и PHP CLI. Сначала сохраните подключение и выберите Manticore в админке. --prepare начинает перенос всего существующего индекса; --max-time=0 снимает ограничение времени между порциями. Повторная команда без --prepare продолжает очередь.

Дополнительная доставка раз в минуту, запись в crontab пользователя bitrix (sudo -u bitrix crontab -e):

* * * * * /usr/bin/php /home/bitrix/www/bitrix/modules/zorka.search/tools/manticore.php /home/bitrix/www --max-time=45 >> /home/bitrix/zorka-manticore.log 2>&1

Настройте ротацию журнала. Это отдельная доставка в Manticore: она не заменяет индексирование каталога и обычный cron модуля. Пересекающиеся порции синхронизации защищены блокировкой.

Сбой, переключение и удаление​

При недоступности службы или неполной подготовке модуль использует MySQL. После ошибки подключения на 15 секунд прекращаются повторные обращения из поиска. Для слишком широкого запроса, который даёт более 5000 кандидатов, также используется полный MySQL-поиск: результаты не обрезаются этим порогом. Поэтому ускорение зависит от запроса; время всей страницы включает работу Битрикса и шаблона.

Очередь и последняя ошибка показаны на вкладке движка. Если таблица потеряна, восстановите службу и нажмите «Подготовить индекс Manticore». Не редактируйте данные этой таблицы вручную.

Для возврата выберите MySQL — встроенный и нажмите «Сохранить движок». Переиндексация не требуется. При удалении модуля внешняя служба и таблица не удаляются; сначала убедитесь, что они больше никому не нужны. После удаления самого модуля обязательна полная переиндексация штатного поиска Битрикса, как описано в инструкции удаления.

Замеры экспериментального индекса​

7 октября 2026 года сравнивались SQL модуля 0.1.32 и отдельный экспериментальный индекс Manticore на одинаковых синтетических названиях и артикулах. Стенд: 2 vCPU, 4 ГиБ RAM, MySQL 8.0.46, PHP 8.3, Manticore 29.9.0. По 3 прогревочных и 30 измеряемых запросов, выдача первых 20 ID; p50 — медиана.

Запрос, 70 000 документовMySQL p50, мсManticore p50, мс
Артикул, название по словам58.1651.047
Два слова, узкая выдача87.0051.238
Одно слово, широкая выдача95.1335.680
Артикул, название по фрагментам149.3351.085
Фрагмент названия165.1645.690
Два фрагмента названия205.6021.425
Пустая выдача, фрагмент148.6231.079

Совпали все найденные ID и их порядок в 14 сценариях на 10 и 70 тысячах документов. На 10 тысячах медианы составили 7–31 мс и 0,5–1,1 мс соответственно. Измерялся только последовательный поиск с прогретыми данными: без прав, CRM, синонимов, загрузки Битрикса и параллельных посетителей.

Это не замер скорости Manticore + MySQL из 0.1.33–0.1.34. В готовой интеграции другая схема кандидатов и обязательная SQL-проверка; широкие запросы с более чем 5000 кандидатами используют MySQL. Коэффициенты ускорения прототипа нельзя обещать для этой версии или страницы целиком.