Ошибки индексации
Документы отправлены в AACsearch, но не появляются в поиске — диагностика задержки очереди буфера, несоответствия схемы, ошибок валидации и давления переиндексации.
Индексация отделена от индексирования: запись попадает в SearchIngestBuffer, воркер забирает её и применяет к живому индексу. «Сбой» может означать 4xx на границе API, 4xx у воркера или зависшую очередь. Для каждого — своё решение.
Симптомы
| Что вы видите | Где проблема |
|---|---|
4xx возвращается от sync/full, sync/delta, documents:batch | Валидация на границе не пройдена — запрос никогда не попал в очередь |
2xx возвращается, но документ не появляется через 2 минуты | Воркер отклонил его (схема, тип) или задержка очереди |
| Некоторые документы появляются, другие нет | Валидация по документам; проверьте поле errors[] в ответе |
| Количество документов застыло после задачи | Воркер остановлен или выполняется миграция схемы |
Дерево решений
API вернул 2xx?
├─ нет → исправьте тело запроса; см. "Ошибки валидации" ниже
└─ да → проверьте глубину очереди буфера
├─ глубина 0 → воркер обработал; проверьте соответствие схемы
└─ глубина > 0 → ждите; см. "Задержка очереди" нижеПроверка 1: ответ API
Успешная постановка в очередь возвращает { "enqueued": <n>, "errors": [] }. Частичный успех возвращает ошибки по документам:
{
"enqueued": 998,
"errors": [
{
"external_id": "product-123",
"error": "validation_failed",
"message": "Field 'price' expected float, got string"
},
{
"external_id": "product-456",
"error": "missing_field",
"message": "Required field 'title' is missing"
}
]
}Исправьте каждую строку согласно её коду error. Остальные 998 уже на пути к индексу.
Частые ошибки валидации
| Код ошибки | Значение | Исправление |
|---|---|---|
validation_failed | Тип поля не соответствует схеме | Приведите или преобразуйте на стороне коннектора |
missing_field | Обязательное поле отсутствует | Добавьте его; или пометьте как необязательное в схеме индекса |
payload_too_large | Один документ > 1 МБ | Разделите или обрежьте большие текстовые поля |
batch_too_large | Пакет > 1000 документов | Разделите на несколько пакетов |
unknown_field (предупреждение, не сбой) | Лишнее поле, отсутствующее в схеме | Либо добавьте в схему, либо удалите на стороне коннектора |
Проверка 2: глубина очереди буфера
Если API ответил enqueued: N, но документы не видны через 2 минуты, проверьте очередь:
curl -X GET https://app.aacsearch.com/api/v1/projects/<projectId>/usage \
-H "Authorization: Bearer aa_admin_..."Ответ включает bufferDepth для организации. Здоровая глубина — < 1000 большую часть времени. Устойчивая глубина > 50 000 указывает на троттлинг воркера.
| Глубина | Значение |
|---|---|
| 0 | Воркер в простое, всё обработано |
| 1–10 000 | Нормально — типичная задержка < 30 с |
| 10 000–50 000 | Навёрстывание после всплеска — типичная задержка < 5 мин |
| > 50 000 | Воркер затроттлен — см. «Давление» ниже |
Проверка 3: несоответствие схемы
Документ может пройти валидацию на границе, но быть отклонён воркером, если тип поля изменился с момента установки схемы индекса. Отклонения воркера отображаются в дашборде:
Поиск → Индексы → индекс → вкладка «Recent ingest errors».
Частые причины:
- Коннектор начал отправлять новое поле, для которого нет определения фасета/типа.
- Поле изменилось с
stringнаstring[]в источнике. - Вложенный объект был сплющен не так, как ожидает схема.
Обновите схему (admin API → PATCH /v1/indexes/<id>) и повторно отправьте затронутые документы.
Проверка 4: выполняется переиндексация
Во время полной переиндексации живой псевдоним подменяется в конце. Пока переиндексация выполняется, новые записи пишутся в обе коллекции — старую и новую. Записи не теряются, но вы можете наблюдать временную задержку.
Проверьте Поиск → Индексы → статус. Если статус reindexing, дождитесь завершения. См. переиндексация и нулевой простой для полного жизненного цикла.
Проверка 5: особенности коннектора
Если вы используете коннектор (PrestaShop, Bitrix, Postgres-sync), проверьте последнюю задачу синхронизации коннектора:
curl -X GET https://app.aacsearch.com/api/v1/projects/<projectId>/sync-jobs \
-H "Authorization: Bearer aa_admin_..."Каждая строка имеет статус: pending, running, completed, failed. Упавшие задачи включают базовую ошибку и пример документа, на котором произошёл сбой.
Давление: воркер затроттлен
Если bufferDepth растёт до сотен тысяч и не уменьшается, происходит одно из следующего:
| Причина | Исправление |
|---|---|
| Достигнут потолок конкурентности уровня тарифа | Обновить тариф или обратиться в поддержку для повышения количества воркеров на организацию |
| Вышестоящий поисковый движок медленный | Проверить страницу статуса; обратиться в поддержку, если наша сторона здорова |
| Большая переиндексация потребляет воркер | Дождаться завершения переиндексации; рассмотреть планирование переиндексаций на непиковое время |
| Много маленьких пакетов (по 1 документу) | Переключиться на documents:batch с 100–1000 на запрос |
Матрица решений
| Диагноз | Исправление |
|---|---|
| Валидация 4xx на границе | Исправить тело запроса, используя построчные errors[] |
| Несоответствие схемы | Обновить схему индекса, повторно отправить затронутые документы |
| Задержка очереди < 5 мин | Ждать |
| Устойчивая задержка очереди | Перейти на более крупные пакеты; обратиться в поддержку, если проблема постоянна |
| Выполняется переиндексация | Дождаться подмены |
| Задача коннектора упала | Проверить задачу; исправить коннектор или исходные данные |
Диагностический пакет
| Поле | Примечания |
|---|---|
| ID организации | обязательно |
| Slug индекса | обязательно |
| ID задачи | из ответа синхронизации или списка sync-jobs |
Снимок bufferDepth | обязательно |
| Пример упавшего документа | полная нагрузка + error/message из ответа |
| Когда это началось | UTC метка времени |
| Тип коннектора | если применимо (PrestaShop, Bitrix и т.д.) |
ID документов детерминированы из external_id. Если вы повторно отправляете
тот же external_id, он перезаписывается — удалять сначала не нужно.
Связанные страницы
- Жизненный цикл API коннектора — справочник эндпоинтов
- Синхронизация коннектора — проблемы, специфичные для коннектора
- Переиндексация и нулевой простой
- Ошибки аутентификации — для 401/403 на эндпоинтах индексации
Виджет не загружается
Тег скрипта виджета на странице, но поисковый UI не появляется — диагностика сбоя загрузки скрипта, отсутствующего контейнера, блокировок CSP, проблем с ключом и монтирования в Shadow DOM.
Синхронизация коннектора
Коннектор помечен как офлайн, heartbeat не проходит, задачи синхронизации зависли — диагностика токенов коннектора, сетевой доступности, несоответствия режима синхронизации и кеша дашборда.