Переход с Algolia на AACsearch
Пошаговое руководство по переносу поиска с Algolia на AACsearch. Полная миграция за несколько часов, без времени простоя.
Миграция с Algolia на AACsearch занимает всего несколько часов. Это пошаговое руководство поможет вам перенести товары, настройки и переключить ваше приложение на новый поиск без остановки сайта.
Обзор процесса
| Этап | Действие | Время |
|---|---|---|
| 1 | Экспортируйте товары из Algolia | 5 мин |
| 2 | Создайте индекс в AACsearch | 5 мин |
| 3 | Загрузите товары | 10 мин |
| 4 | Настройте фильтры и синонимы | 15 мин |
| 5 | Обновите код вашего сайта | 30 мин |
| 6 | Переключитесь на AACsearch | 5 мин |
Итого: ~70 минут для большинства сайтов.
Этап 1: Экспортируйте товары из Algolia
Способ 1: Через Algolia CLI
Установите Algolia CLI и экспортируйте индекс:
# Установите CLI
npm install -g algolia-cli
# Экспортируйте индекс
algolia export \
--app-id YOUR_ALGOLIA_APP_ID \
--api-key YOUR_ADMIN_API_KEY \
--index-name your_index_name \
--output ./algolia-export.jsonСпособ 2: Через REST API
Если CLI не подходит, используйте curl:
curl "https://YOUR_APP_ID.algolia.net/1/indexes/YOUR_INDEX_NAME/browse" \
-H "X-Algolia-API-Key: YOUR_ADMIN_API_KEY" \
-H "X-Algolia-Application-Id: YOUR_APP_ID" \
| jq '.hits' > algolia-export.jsonПроверка файла
Откройте algolia-export.json и убедитесь:
- ✓ Файл содержит ваши товары
- ✓ Есть уникальные идентификаторы (обычно
objectID) - ✓ Есть основные поля: название, описание, цена
Этап 2: Создайте индекс в AACsearch
- Откройте панель управления app.aacsearch.com
- Перейдите в Поиск → Индексы
- Нажмите Новый индекс
- Дайте название (например, "Товары")
- Нажмите Создать
Индекс создан и готов к приёму товаров.
Этап 3: Загрузите товары
Подготовка данных
Преобразуйте формат Algolia в формат AACsearch. В Algolia используется objectID, в AACsearch — id:
# Преобразуйте objectID → id и выберите нужные поля
cat algolia-export.json | jq '[.[] | {
id: .objectID,
title: .name,
description: .description,
price: .price,
image_url: .image,
product_url: .url,
category: .category,
stock_quantity: .stock
}]' > aacsearch-import.jsonЗагрузка через панель управления (рекомендуется)
Самый простой способ для 1000–50000 товаров:
- В панели AACsearch перейдите в Поиск → Индексы → ваш индекс → Импорт
- Нажмите Загрузить файл JSON
- Выберите
aacsearch-import.json - Нажмите Импортировать
Статус загрузки будет обновляться на экране.
Загрузка через API (для больших объемов)
Если у вас 50000+ товаров, используйте REST API:
curl -X POST "https://app.aacsearch.com/api/v1/indexes/your-index-slug/documents:batch" \
-H "Authorization: Bearer YOUR_ADMIN_API_KEY" \
-H "Content-Type: application/json" \
-d @aacsearch-import.jsonПроверка импорта
После загрузки:
- В панели перейдите в Поиск → Индексы → ваш индекс → Статус
- Вы видите количество загруженных товаров
- Попробуйте поиск: введите название товара и проверьте результаты
Если товары не появляются мгновенно, подождите 1–2 минуты на индексирование.
Этап 4: Настройте поиск (опционально)
Фильтры (фасеты)
Если в Algolia у вас были фасеты (фильтры по категориям, бренду и т.д.), настройте их в AACsearch:
- В панели перейдите в Поиск → ваш индекс → Схема
- Найдите поле, которое должно быть фасетом (например,
category) - Включите флаг Фасет (Facet)
- Сохраните
Синонимы
Если в Algolia были синонимы:
- В панели перейдите в Поиск → ваш индекс → Синонимы
- Нажмите Добавить синоним
- Введите главное слово и его синонимы
- Пример: "кроссовки" → "кеды, sneakers, обувь спортивная"
Сортировка
По умолчанию товары сортируются по релевантности. Если нужна сортировка по цене:
- В Схема найдите поле
price - Включите флаг Сортировка (Sortable)
- Сохраните
Этап 5: Обновите код вашего сайта
Замена JavaScript клиента
В вашем коде Algolia замените клиент на AACsearch.
Раньше (Algolia):
import algoliasearch from 'algoliasearch/lite';
const searchClient = algoliasearch('APP_ID', 'SEARCH_KEY');
const index = searchClient.initIndex('your_index_name');
// Поиск
const results = await index.search('red shoes', {
facets: ['category', 'brand'],
filters: 'price < 100'
});Теперь (AACsearch):
const search = new AacsearchWidget.Search({
baseUrl: 'https://app.aacsearch.com',
apiKey: 'ss_search_YOUR_KEY',
indexSlug: 'your_index'
});
// Поиск
const results = await search.search({
q: 'red shoes',
facetBy: ['category', 'brand'],
filterBy: 'price < 100'
});Замена параметров запроса
| Algolia | AACsearch |
|---|---|
index.search(query) | search.search({ q: query }) |
{ facets: ['category'] } | { facetBy: ['category'] } |
{ filters: 'price < 100' } | { filterBy: 'price < 100' } |
{ hitsPerPage: 20 } | { perPage: 20 } |
{ page: 1 } | { page: 1 } |
{ sort: { price: 'asc' } } | { sortBy: 'price:asc' } |
Обновление UI результатов
Структура результатов похожа, но есть небольшие различия:
Algolia:
{
hits: [...],
nbHits: 100,
facets: { category: [...] }
}AACsearch:
{
results: [...],
totalCount: 100,
facets: { category: [...] }
}Обновите обращения к свойствам в вашем коде.
Если вы используете InstantSearch (React, Vue, Angular)
Если вы используете react-instantsearch или аналог:
- Замените
algoliasearchнаAACsearchSearchClient - Остальной код может остаться без изменений (компоненты совместимы)
Пример для React:
import { InstantSearch, SearchBox, Hits } from 'react-instantsearch';
const searchClient = new AacsearchWidget.Search({
baseUrl: 'https://app.aacsearch.com',
apiKey: 'ss_search_YOUR_KEY',
indexSlug: 'products'
});
export default function App() {
return (
<InstantSearch searchClient={searchClient} indexName="products">
<SearchBox />
<Hits hitComponent={HitComponent} />
</InstantSearch>
);
}Этап 6: Переключитесь на AACsearch
Перед переключением
- Протестируйте поиск — откройте сайт локально и проверьте все фильтры и сортировку
- Проверьте результаты — убедитесь, что результаты полные и корректные
- Проверьте производительность — время ответа должно быть < 500ms
- Проверьте на мобильных — убедитесь, что виджет работает на телефоне
Сделайте переключение
- Обновите код на боевом сервере (deploy)
- Очистите кэш браузера (Ctrl+Shift+Del)
- Откройте сайт в 2–3 браузерах и проверьте поиск
После переключения
- Следите за логами — ошибок не должно быть
- Следите за аналитикой — проверьте метрики поиска в панели AACsearch
- Готовьте резервный план — если что-то сломалось, вы можете быстро вернуть Algolia
План отката
Если в процессе что-то пойдет не так, вот как вернуться на Algolia:
- Быстро: Обновите код вашего сайта обратно на Algolia клиент (5 минут)
- Синхронизация: Если вы обновляли товары в AACsearch, убедитесь, что они также обновились в Algolia
- Проверка: Откройте сайт и убедитесь, что поиск работает как раньше
Совет: не удаляйте индекс Algolia на протяжении 1–2 недель после миграции.
Справка: соответствие полей Algolia ↔ AACsearch
| Algolia | AACsearch | Примечание |
|---|---|---|
objectID | id | Уникальный идентификатор товара |
name | title | Название товара |
description | description | Описание товара |
price | price | Цена в числовом формате |
currency | currency | Код валюты (RUB, USD, EUR) |
image | image_url | URL изображения |
url | product_url | URL страницы товара |
category | category | Категория товара |
brand | brand | Бренд товара |
stock | stock_quantity | Количество на складе |
| — | availability | Статус: "in_stock" или "out_of_stock" |
Частые вопросы
Q: Потеряются ли мои товары?
A: Нет, товары будут скопированы. Ничего не будет удалено, только добавлено.
Q: Могу ли я синхронизировать обе системы (Algolia и AACsearch) одновременно?
A: Да, во время перехода вы можете отправлять обновления товаров в обе системы. Потом отключите одну.
Q: Сколько это стоит?
A: Аналогично Algolia — по подписке в зависимости от объема поисков и товаров. Посмотрите цены.
Q: Есть ли бесплатный пробный период?
A: Да, 14 дней полного доступа без карты. Создайте аккаунт.
Q: Можно ли использовать оба сервиса одновременно?
A: Да, но это усложнит разработку. Рекомендуем полный переход.
Помощь и поддержка
Миграция с поиска в БД (SQL LIKE / FTS)
Миграция с `LIKE %query%`, MySQL fulltext, PostgreSQL `tsvector` или иного БД-нативного поиска в AACsearch.
Переход с Elasticsearch на AACsearch
Пошаговое руководство по переносу поиска с Elasticsearch на AACsearch. Без управления серверами, без настройки кластеров.