Команды управления поиском
Команды для работы с поисковым модулем: переиндексация поискового индекса.
search:reindex
Выполняет переиндексацию поискового индекса для всего контента сайта.
Синтаксис
php bitrix.php search:reindex [опции]Опции
--full- полная переиндексация с очисткой существующего индекса--clear-suggest- очистить поисковые подсказки перед индексацией--max-time=<секунды>- максимальное время выполнения одного шага в секундах (по умолчанию: 30)--site=<id>- индексировать только указанный сайт-v,-vv- подробный вывод прогресса
Примеры использования
# Обычная переиндексация
php bitrix.php search:reindex
# Полная переиндексация с очисткой индекса
php bitrix.php search:reindex --full
# С очисткой подсказок
php bitrix.php search:reindex --clear-suggest
# С увеличенным временем выполнения шага
php bitrix.php search:reindex --max-time=60
# Только для конкретного сайта
php bitrix.php search:reindex --site=s1
# Полная переиндексация с подробным выводом
php bitrix.php search:reindex --full --clear-suggest -vv
# Комбинация всех опций
php bitrix.php search:reindex \
--full \
--clear-suggest \
--max-time=120 \
--site=s1 \
-vЧто индексируется
Поисковый модуль индексирует следующий контент:
- Инфоблоки - элементы и разделы инфоблоков
- Статические страницы - HTML-файлы сайта
- Форумы - сообщения и темы форумов
- Разделы - структура разделов сайта
- Другие модули - контент, зарегистрированный в поисковом индексе
Типы индексации
Обычная индексация
php bitrix.php search:reindex- Обновляет существующий индекс
- Добавляет новый контент
- Обновляет измененный контент
- Сохраняет старые данные
Полная индексация
php bitrix.php search:reindex --full- Удаляет весь существующий индекс
- Создает индекс заново
- Занимает больше времени
- Рекомендуется при проблемах с поиском
Когда нужна переиндексация
Переиндексация необходима после:
- Массового импорта контента
- Изменения настроек морфологии
- Изменения структуры сайта
- Обновления модулей
- Миграции базы данных
- Восстановления из резервной копии
- При неправильных результатах поиска
Производительность
⚠️ Внимание! Переиндексация может занять длительное время.
Рекомендации:
- Запускайте в периоды низкой нагрузки
- Используйте
--max-timeдля контроля нагрузки - Мониторьте прогресс с опцией
-v
Влияние на систему
Во время индексации:
- ✅ Сайт продолжает работать нормально
- ⚠️ Результаты поиска могут быть неполными
- ⚠️ Возрастает нагрузка на базу данных
- ⚠️ Возрастает использование CPU
- ⚠️ Увеличивается размер таблиц поиска
Использование в автоматизации
Регулярная переиндексация
#!/bin/bash
# Еженедельная полная переиндексация
cd /var/www/bitrix
echo "Начало переиндексации: $(date)" >> /var/log/search_reindex.log
php bitrix.php search:reindex --full -v >> /var/log/search_reindex.log 2>&1
echo "Завершено: $(date)" >> /var/log/search_reindex.logПереиндексация в cron
# Добавить в crontab
# Переиндексация каждое воскресенье в 2:00
0 2 * * 0 cd /var/www/bitrix && php bitrix.php search:reindex --full
# Быстрая переиндексация каждый день в 4:00
0 4 * * * cd /var/www/bitrix && php bitrix.php search:reindexПереиндексация после импорта
#!/bin/bash
# Импорт контента с последующей переиндексацией
# Импорт данных
/path/to/import-script.sh
# Очистка кеша
cd /var/www/bitrix
php bitrix.php cache:type:clear iblock
# Переиндексация поиска
php bitrix.php search:reindex --clear-suggest
echo "Импорт и переиндексация завершены"Переиндексация с уведомлением
#!/bin/bash
# Переиндексация с отправкой отчета
cd /var/www/bitrix
START_TIME=$(date +%s)
php bitrix.php search:reindex --full > /tmp/reindex_output.txt 2>&1
END_TIME=$(date +%s)
DURATION=$((END_TIME - START_TIME))
DURATION_MIN=$((DURATION / 60))
{
echo "Переиндексация поиска завершена"
echo "Длительность: $DURATION_MIN минут"
echo ""
echo "Подробности:"
cat /tmp/reindex_output.txt
} | mail -s "Search Reindex Complete" admin@example.comПродвинутые сценарии
Поэтапная индексация больших сайтов
#!/bin/bash
# Индексация с паузами для снижения нагрузки
cd /var/www/bitrix
echo "Этап 1: Очистка подсказок"
php bitrix.php search:reindex --clear-suggest
sleep 300 # 5 минут паузы
echo "Этап 2: Полная переиндексация"
php bitrix.php search:reindex --full --max-time=60
echo "Индексация завершена"Индексация с проверкой нагрузки
#!/bin/bash
# Запуск индексации только при низкой нагрузке
cd /var/www/bitrix
# Получить текущую нагрузку
LOAD=$(uptime | awk -F'load average:' '{ print $2 }' | cut -d',' -f1 | xargs)
LOAD_INT=$(echo "$LOAD" | cut -d'.' -f1)
# Запустить только если нагрузка менее 2.0
if [ "$LOAD_INT" -lt 2 ]; then
echo "Нагрузка низкая ($LOAD), запуск индексации"
php bitrix.php search:reindex --full
else
echo "Нагрузка высокая ($LOAD), индексация отложена"
exit 1
fiДифференцированная индексация
#!/bin/bash
# Разная частота индексации для разных сайтов
cd /var/www/bitrix
DAY_OF_WEEK=$(date +%u)
case $DAY_OF_WEEK in
1) # Понедельник - полная индексация главного сайта
php bitrix.php search:reindex --full --site=s1
;;
4) # Четверг - полная индексация дополнительного сайта
php bitrix.php search:reindex --full --site=s2
;;
*) # Остальные дни - быстрая индексация всех
php bitrix.php search:reindex
;;
esacTroubleshooting
Индексация не завершается
Проблема: Процесс индексации зависает или работает слишком долго
Решения:
- Увеличьте
max_execution_timeв php.ini - Увеличьте
memory_limitв php.ini - Используйте опцию
--max-timeдля контроля времени шага - Запускайте в периоды низкой нагрузки
- Проверьте производительность базы данных
Поиск не находит новый контент
Проблема: После индексации новый контент не находится
Решения:
- Проверьте, что контент проиндексирован: проверьте таблицы
b_search_content* - Очистите кеш:
php bitrix.php cache:clear - Выполните полную переиндексацию:
php bitrix.php search:reindex --full - Проверьте настройки морфологии
- Проверьте права доступа к контенту
Ошибка памяти
Проблема: Fatal error: Allowed memory size exhausted
Решения:
- Увеличьте
memory_limitв php.ini (например, до 512M или 1G) - Уменьшите
--max-timeдля обработки меньших порций данных - Оптимизируйте базу данных
- Проверьте наличие зацикливания в индексации
Индекс занимает слишком много места
Проблема: Таблицы поиска занимают много дискового пространства
Решения:
- Настройте исключения для индексации (в настройках поиска)
- Исключите из индексации неважный контент
- Оптимизируйте таблицы:
OPTIMIZE TABLE b_search_content; - Настройте регулярную очистку старых данных
- Рассмотрите использование внешнего поискового движка (Sphinx, Elasticsearch)
Поиск возвращает неправильные результаты
Проблема: Результаты поиска неактуальны или содержат удаленный контент
Решения:
- Выполните полную переиндексацию с очисткой:bash
php bitrix.php search:reindex --full --clear-suggest - Проверьте настройки морфологии
- Очистите кеш
- Проверьте наличие дублей в индексе
Полезные советы
💡 Регулярная индексация - настройте автоматическую переиндексацию раз в неделю
💡 Мониторинг размера - следите за размером таблиц поиска
💡 Очистка подсказок - периодически очищайте устаревшие подсказки
💡 Тестируйте результаты - после индексации проверьте качество поиска
💡 Оптимизация настроек - настройте исключения для ненужного контента
💡 Внешние движки - для больших проектов рассмотрите Sphinx или Elasticsearch
Смотрите также
- Команды инфоблоков - индексация инфоблоков
- Команды кеша - очистка кеша после индексации
- Примеры cron - автоматизация переиндексации
- Официальная документация Битрикс по поиску