AACsearch
Поисковый API

HTTP API для поиска

Как отправить запрос на поиск товаров через HTTP — параметры, примеры с curl и что вернёт AACsearch.

HTTP API для поиска

Отправляйте поисковые запросы на POST /api/search. Это основной способ поиска товаров через API.

Адрес: POST https://app.aacsearch.com/api/search

Авторизация: Authorization: Bearer ss_search_your_key

Параметры запроса

ПараметрОбязательно?Описание
indexSlugДаНазвание вашего индекса (например, products)
qДаЧто ищет пользователь (например, wireless headphones)
queryByНетКакие поля искать (по умолчанию: title,sku,brand,description)
filterByНетОграничить результаты (например, price:<500)
facetByНетПолучить статистику по полям (например, brand,category)
sortByНетУпорядочить (по умолчанию: _text_match:desc)
pageНетНомер страницы (начиная с 1, по умолчанию: 1)
perPageНетТоваров на странице (по умолчанию: 10, максимум: 100)
highlightFieldsНетПодсветить совпадения в этих полях
includeFieldsНетВозвращать только эти поля (для скорости)
excludeFieldsНетИсключить эти поля из ответа

Примеры

Простой поиск

curl -X POST https://app.aacsearch.com/api/search \
  -H "Authorization: Bearer ss_search_your_key" \
  -H "Content-Type: application/json" \
  -d '{
    "indexSlug": "products",
    "q": "wireless headphones",
    "page": 1,
    "perPage": 20
  }'

Поиск с фильтрами, сортировкой и статистикой

curl -X POST https://app.aacsearch.com/api/search \
  -H "Authorization: Bearer ss_search_your_key" \
  -H "Content-Type: application/json" \
  -d '{
    "indexSlug": "products",
    "q": "headphones",
    "filterBy": "availability:=in_stock && price:[50..200]",
    "facetBy": "brand,categories",
    "sortBy": "price:asc",
    "page": 1,
    "perPage": 20
  }'

Что возвращает поиск

{
  "found": 142,           // Всего найдено товаров
  "page": 1,              // Текущая страница
  "outOf": 5000,          // Всего товаров в индексе
  "searchTimeMs": 4,      // Время поиска (миллисекунды)
  
  "hits": [
    {
      "document": {
        "id": "prod-123",
        "title": "Sony Wireless Headphones",
        "brand": "Sony",
        "price": 349.99,
        "availability": "in_stock"
      },
      "highlights": [
        {
          "field": "title",
          "snippet": "Sony <mark>Wireless</mark> <mark>Headphones</mark>"
        }
      ],
      "textMatchScore": 578730
    }
  ],
  
  "facetCounts": [
    {
      "fieldName": "brand",
      "counts": [
        { "value": "Sony", "count": 45 },
        { "value": "Bose", "count": 28 }
      ]
    }
  ]
}

Что означают поля:

  • found — Сколько товаров найдено (для вашего запроса)
  • hits — Найденные товары с деталями
  • highlights — Совпадающие слова обёрнуты в теги <mark> для подсвечивания
  • facetCounts — Статистика по брендам, категориям и т.д. для фильтров в UI
  • searchTimeMs — Как быстро прошёл поиск

Поиск всех товаров (wildcard)

Используйте q: "*" чтобы получить все товары — полезно при использовании фильтров:

{
  "indexSlug": "products",
  "q": "*",
  "filterBy": "categories:=Electronics",
  "sortBy": "price:asc"
}

Вернёт все электроники, отсортированные по цене.

Советы по скорости

  • Большие индексы (100К+ товаров): поиск на целое слово работает быстрее
  • Много фильтров и фасетов: уменьшите perPage или не запрашивайте фасеты на каждый поиск
  • Описания товаров: используйте excludeFields: "description" при выводе списков
  • Автодополнение: используйте perPage: 5 и includeFields: "id,title" для скорости

On this page