Обзор миграции
Как мигрировать в AACsearch с разных стеков — БД LIKE, Algolia, Elasticsearch, Meilisearch, self-hosted Typesense.
Обзор миграции
Большинство миграций в AACsearch имеют одинаковую форму: выгрузить данные, отмаппить схему под коллекцию в стиле Typesense, переиграть документы в AACsearch, переключить read-путь приложения и вывести старый стек. Специфика по источнику — в отдельных гайдах; они фокусируются на риске cutover.
Эта страница — точка старта. Выберите гайд по своему источнику, в день переключения прогоните чек-лист, а guide по источнику закрывает остальное.
Выберите стартовую точку
| Откуда переезжаете | Гайд | Типичное время миграции |
|---|---|---|
LIKE-поиск в SQL | Database search | от полудня до 2 дней |
| Algolia | Algolia | от нескольких часов до 1 дня |
| Elasticsearch / OpenSearch | Elasticsearch | от 1 дня до 1 недели (по mappings) |
| Meilisearch | Meilisearch | несколько часов |
| Self-hosted Typesense | Typesense | от нескольких часов до 1 дня |
Если источника нет в списке, Database search — самый общий шаблон: извлечь, описать схему, ingest, валидировать.
Что одинаково для всех миграций
Независимо от источника, вы будете:
- Маппить схему. Имена полей, типы, что ищем (
query_by), что фильтруем, что сортируем. - Выгружать документы. NDJSON или CSV. Большинство источников отдают напрямую; для SQL — запрос.
- Выбирать модель арендатора. Один индекс на org или per-tenant — определяется объёмом и требованиями изоляции. См. Изоляция арендаторов.
- Переигрывать в AACsearch. Через ingest-buffer. Буфер впитывает объём и аккуратно делает back-pressure — пейсить не нужно.
- Валидировать. Сэмплинг запросов. Сравнение top-N до и после. См. Валидация.
- Переключаться. Клиент идёт в AACsearch. Старый держим тёплым минимум 7 дней — на откат.
Что меняется
Почти всегда нужно перенастроить:
Ранжирование
У каждого движка свои дефолты. Самые частые сюрпризы:
- Веса полей. Algolia/Elasticsearch разрешают давать title больше веса, чем description; AACsearch — через
query_by_weights. Перетюньте; не ждите, что старые веса перенесутся. - Boost-правила. Time decay, popularity — перекодируйте в
sort_by. - Stop words и стемминг. У каждого свои. Сделайте корпус «такой запрос возвращал X» и правьте курациями.
Поведение токенизатора
Дефолтный токенизатор Typesense годен для общего текста, но отличается от Elasticsearch-анализаторов, которые сильно конфигурируемы. Заложите спринт валидации против реального query-лога, не синтетики.
Валидация
Соберите 100 представительных запросов из аналитики. По каждому сравните top-5 до и после. Классификация:
- Identical — top-5 совпадает, может в другом порядке.
- Mostly same — 3+ из top-5 совпадают.
- Drift — меньше 3 совпадений.
Drift-кейсы — это места, куда уходят усилия на тюнинг. Часть — баги миграции (поле не отмапилось), часть — улучшения (новый движок ранжирует лучше), часть — требуют курации.
Не пропускайте этот шаг. Миграция без query-level валидации — это путь к фидбеку «поиск стал хуже после миграции», который вы не сможете опровергнуть.
Модели cutover
Два паттерна. Выбирайте по толерантности к риску.
Dark-launch и потом flip
- Индексируете в AACsearch параллельно с существующим.
- Зеркалите запросы в оба, логируете результаты.
- Сравниваете в течение какого-то времени (день, неделя).
- Flip read-трафика в AACsearch.
- Старый держим читающим 7 дней.
Ниже риск, больше инженерных усилий.
Cutover с окном отката
- Индексируете в AACsearch.
- Валидация по 100-query сэмплу.
- Flip в тихое окно.
- Старый — горячий fallback 7 дней.
- После окна выключаете путь отката.
Меньше инженерии, больше дисциплины на деплое. Подходит, когда поиск не на критическом revenue-пути.
Чего мы не делаем
- Автоматизированную end-to-end миграцию. Нет тулзы «дай мне креды Algolia и получи работающий индекс AACsearch». Схема, ранжирование, курации — слишком проектно-специфичны.
- Не обещаем «drop-in replacement». Движки разные. Закладывайте 1–2 недели пост-миграционного тюнинга на нетривиальный корпус.
- Не мигрируем код приложения за вас. SDK есть — см. SDKs; основные клиентские паттерны — в гайдах по источникам, но рефакторинг клиента — на вас.
См. также
- Чек-лист миграции — dry run, валидация, cutover, откат
- Реиндексирование — для пост-миграционных изменений схемы
- Изоляция арендаторов — решите модель до миграции, не после
Серверные хелперы
Пакетная обработка, идемпотентность, стратегия повторных попыток и проверка подписи вебхуков — паттерны, которым должен следовать каждый потребитель серверного SDK при индексации документов и получении вебхуков от AACsearch.
Миграция с поиска в БД (SQL LIKE / FTS)
Миграция с `LIKE %query%`, MySQL fulltext, PostgreSQL `tsvector` или иного БД-нативного поиска в AACsearch.