
Модуль доступен на 2 языках: русском, английском.
Стандартный поиск CS-Cart плохо справляется с опечатками, большими каталогами и сложными запросами. Модуль заменяет его на быстрый полнотекстовый поиск на базе Elasticsearch: устойчивость к опечаткам, синонимы, стоп-слова, мгновенные подсказки и подробная статистика запросов. При недоступности Elasticsearch поиск автоматически переключается на стандартный MySQL-поиск CS-Cart — покупатель ничего не замечает.
Как работает модуль
В основе модуля — четыре сущности:
- Индексация — полная переиндексация каталога в Elasticsearch (идемпотентная, через build-индекс + алиас).
- Поиск и автодополнение — запросы идут в Elasticsearch; при сбое срабатывает FallbackGuard и поиск возвращается к MySQL.
- Синонимы и стоп-слова — управляются в админке и применяются при следующей полной переиндексации.
- История поисковых запросов — логирование всех запросов, пустых поисков и топ-запросов.
1. Установка и первичная настройка
1. Скопируйте содержимое пакета в корень CS-Cart (сохраняя структуру app/, design/, js/, var/).
2. Установите зависимости:
cd app/addons/ip5_elastic_searchcomposer install --no-dev --optimize-autoloader3. В админке: Дополнения → Управление дополнениями → найдите «IP5 Agency — Elastic Search» → Установить.
Если ранее была установлена более ранняя версия модуля — сначала удалите её (Деинсталлировать), затем установите заново: права доступа к новым разделам меню записываются в базу только при установке.
После установки модуль появляется в меню Website:
- Indexation (Индексация)
- Search query history (История поисковых запросов)
- Synonyms and stop words (Синонимы и стоп-слова)

Рис. 1 — Вкладка General модуля: пункты меню и краткое описание.
2. Настройки подключения (Connection)
Откройте Дополнения → Управление дополнениями → IP5 Agency — Elastic Search → Settings → Connection.
Таблица ниже перечисляет все настройки секции Connection.
| Настройка | Что делает |
|---|---|
| Enabled | Общий выключатель: использовать Elasticsearch для поиска. |
| Elastic host | Адрес сервера Elasticsearch (по умолчанию 127.0.0.1). |
| Elastic port | Порт (по умолчанию 9200). |
| Connection scheme | Схема подключения: http или https. |
| Elastic login / password | Учётные данные для доступа к Elasticsearch. |
| Elastic nodes names | Имена узлов кластера. |
| Prefix for indices | Префикс для имён индексов (необязательно). |
| Elastic shards count | Количество шардов (по умолчанию 3). |
| Elastic replicas count | Количество реплик (по умолчанию 1). |
| Connect timeout, sec | Таймаут подключения в секундах. |
| Request timeout, sec | Таймаут запроса в секундах. |

Рис. 2 — Настройки подключения к Elasticsearch (основные параметры).

Рис. 3 — Продолжение настроек подключения: шарды, реплики и таймауты.
После заполнения параметров рекомендуется проверить соединение. Успешное подключение отображается зелёным уведомлением на странице индексации.
3. Настройки поведения поиска (Search behavior)
Во вкладке Settings → Search behavior настраивается логика поиска.
| Настройка | Что делает |
|---|---|
| Fuzziness (typo tolerance) | Устойчивость к опечаткам: 0 (только точное совпадение), 1, 2 или AUTO (рекомендуется). |
| Minimum should match | Минимальная доля совпадающих слов запроса (например, 75%). |
| Suggest results limit | Количество подсказок автодополнения (по умолчанию 8). |
| Indexation batch size | Размер пакета при индексации (по умолчанию 200). |
| Redirect to product page if only one result found | При единственном результате сразу переходить на карточку товара. |
Рис. 4 — (при наличии скриншота) Вкладка Search behavior с параметрами fuzziness, minimum should match и лимитами.
4. Индексация
Перейдите в Website → Indexation.
На странице отображается:
- статус подключения к Elasticsearch;
- текущий статус индексации (idle / running / completed / error);
- дата последнего запуска;
- количество проиндексированных товаров;
- кнопка полной переиндексации;
- история запусков.

Рис. 5 — Страница индексации после успешного завершения. Статус Completed, все товары проиндексированы, видна история запусков.
Нажмите Run full reindexation, чтобы запустить полную переиндексацию каталога. Операция идемпотентна: создаётся новый build-индекс, после чего алиас переключается на него.
Важно: изменения в синонимах и стоп-словах применяются только после следующей полной переиндексации.
5. Синонимы и стоп-слова
Перейдите в Website → Synonyms and stop words.

Рис. 6 — Управление синонимами и стоп-словами. Синонимы указываются через запятую.
Синонимы позволяют находить товары по альтернативным написаниям (например, «камод» → «комод»). Стоп-слова исключаются из поискового индекса. После любых изменений необходимо запустить полную переиндексацию.
6. История поисковых запросов
Перейдите в Website → Search query history.
Рис. 7 — История поисковых запросов: все запросы, пустые поиски и топ-запросы. Доступен фильтр по датам и очистка истории.
Доступны три вкладки:
- All queries — все зафиксированные запросы с количеством результатов и признаком использования fallback (стандартного поиска);
- Empty searches — запросы, по которым ничего не найдено;
- Top queries — самые популярные запросы.
7. Поиск на витрине
На витрине модуль обеспечивает быстрые подсказки при вводе и устойчивость к опечаткам.

Рис. 8 — Автодополнение при корректном запросе «комод»: подсказки с названиями товаров и ценами.

Рис. 9 — Поиск с опечаткой «камоды»: модуль всё равно находит релевантные товары благодаря fuzziness и/или синонимам.
8. Отказоустойчивость
При недоступности Elasticsearch (таймаут, неверные настройки, сервер недоступен) поиск автоматически переключается на стандартный MySQL-поиск CS-Cart. Ошибка логируется в журнал событий CS-Cart и видна только администратору. На витрине покупатель не видит никаких сообщений об ошибке.
Требования
- CS-Cart / CS-Cart Multi-Vendor 4.18.1 – 4.21.x
- PHP 8.1+
- Elasticsearch 8.x
- Composer (для установки официального PHP-клиента Elasticsearch)