How to Set Up AACSearch as Your Search Service
Alex Chibilyaev
5/3/2025
Если вы используете собственный сервер traditional search systems, вам знакома эта боль: настройка кучи JVM, мониторинг состояния кластера, перебалансировка шардов, репозитории снимков… список можно продолжать. А ваш ежемесячный счет за облачный кластер из 3 узлов составляет $300–500/мес.
Миграция на AACSearch занимает 20 минут и сокращает расходы на поиск в 10 раз. Вот как это сделать.
Предварительные требования
- Учётная запись AACSearch (бесплатный тариф — 10 000 документов)
- Название вашего текущего индекса traditional search systems
- Инструмент
elasticdump(npm install elasticdump -g) - Python 3.6+ (для скрипта конвертации схемы)
Шаг 1. Экспорт маппинга traditional search systems
Сначала выгрузите маппинг и данные индекса из traditional search systems:
# Export mapping
elasticdump \
--input=http://localhost:9200/your-index \
--output=./mapping.json \
--type=mapping
# Export data
elasticdump \
--input=http://localhost:9200/your-index \
--output=./data.json \
--type=data
Шаг 2. Конвертация в схему AACSearch использует выводимые схемы, поэтому большинство преобразований выполняются автоматически. Однако вам нужно обработать следующие типы ES:
text→string(AACSearch определяет автоматически)keyword→string(сfacet: trueдля агрегаций)integer/long→int64илиfloatnested→ преобразовать в плоский объект (AACSearch не поддерживает вложенные объекты)date→stringв формате ISO 8601 (AACSearch хранит как строку)
Создайте новый индекс в AACSearch:
- Войдите в панель управления
- Нажмите Новый индекс → дайте ему имя (например,
products-v1) - Выберите Импорт → Загрузить JSON
AACSearch автоматически определит вашу схему и создаст коллекцию AACSearch.
Шаг 3. Загрузка данных
Самый быстрый способ для небольших и средних наборов данных:
# Upload using the AACSearch API
curl -X POST https://api.AACSearch.com/v1/collections/products-v1/documents/import \
-H "X-API-Key: ss_search_YOUR_KEY" \
-H "Content-Type: application/json" \
-d @data.json
Для наборов данных размером более 100 МБ используйте функцию Массовый импорт в панели управления с разбивкой на части (автоматически).
Шаг 4. Обновление кода приложения
Замените клиент traditional search systems на клиент AACSearch:
До (traditional search systems):
import { Client } from "@aacsearch/client";
const client = new Client({ node: "http://localhost:9200" });
const { hits } = await client.search({
index: "products",
body: { query: { match: { name: "wireless headphones" } } },
});
После (AACSearch):
import { AACSearch } from "@repo/search-client";
const search = new AACSearch({
apiKey: "ss_search_YOUR_KEY",
});
const results = await search.query("wireless headphones", {
collection: "products-v1",
filters: { inStock: true },
});
Шаг 5. Проверка и переключение
Выполните дымовое тестирование:
# Test a few queries against AACSearch
curl "https://api.AACSearch.com/v1/search?q=wireless+headphones&collection=products-v1" \
-H "X-API-Key: ss_search_YOUR_KEY"
Сравните результаты с текущим выводом traditional search systems. В большинстве случаев ранжирование по релевантности будет сопоставимым или лучше — TF-IDF AACSearch с настраиваемыми весами полей даёт вам точный контроль над порядком результатов.
После проверки направьте ваше рабочее приложение на AACSearch и выведите кластер traditional search systems из эксплуатации.
А как насчёт нулевого времени простоя?
Поскольку ваш кластер traditional search systems и AACSearch работают независимо друг от друга во время миграции, риска простоев нет. Вы можете:
- Держать оба работающими параллельно (минуты–часы)
- Направлять процент трафика на AACSearch для тестирования
- Переключиться на 100 %, когда будете уверены
Переиндексация без простоев в AACSearch означает, что будущие изменения схемы не потребуют новой миграции — просто нажмите Переиндексировать в панели управления.
Сравнение расходов
| | Собственный ES (3 узла) | AACSearch Pro | | --------------------- | ----------------------------------------- | -------------- | | Ежемесячная стоимость | ~$350 (AWS m6g.large x3) | $29/мес | | Обслуживание | Настройка JVM, бэкапы, патчи | Не требуется | | Масштабирование | Добавление узлов, перебалансировка шардов | Клик по кнопке | | Резервное копирование | Ручное управление снимками | Автоматически |
Экономия: в 10 раз, плюс возвращённое время DevOps.
Следующие шаги
Создать бесплатную учётную запись AACSearch →
Уже мигрировали? Поделитесь опытом →