Motor de busca e reindexação
Consulta qual motor atende a busca da loja, cria ou reconfigura o índice e reconstrói o índice quando o catálogo e a busca saem de sincronia.
A busca da vitrine não consulta o catálogo direto: ela consulta um índice, uma cópia dos produtos organizada para busca rápida. O índice é atualizado quando um produto muda, mas pode ficar para trás depois de uma carga em massa, de uma restauração de backup ou de uma falha do motor. Estas rotas servem para ver o estado do índice e reconstruí-lo. Todas exigem manage_settings; as três com meili exigem também o módulo search-management ligado (sem ele, 403 module_disabled).
/api/v1/admin/search/meili/statusAdminEstado do motor de busca
Mostra qual motor atende a busca da loja, se está acessível, quantos produtos estão indexados e quando foi a última indexação.
/api/v1/admin/search/meili/ensure-indexAdminCria ou reconfigura o índice do Meilisearch
Garante que o índice da loja exista no Meilisearch com a configuração atual (campos pesquisáveis, filtros, ordenação). É seguro repetir. Use depois de ligar o Meilisearch pela primeira vez ou quando a configuração da busca mudou. Só faz sentido quando a loja usa o Meilisearch; sem ele, devolve erro. Sem corpo.
/api/v1/admin/search/meili/reindexAdminReconstrói o índice em segundo plano
Reconstrói o índice com todos os produtos ativos. Responde na hora (202) e o trabalho continua em segundo plano; acompanhe last_indexed_at e total_indexed em status. Usa o motor ativo da loja: Meilisearch quando há, senão o índice vetorial. Se a loja só tem a busca direta no banco, não há o que reconstruir e a resposta é 503. Sem corpo.
/api/v1/admin/search/reindexAdminReconstrói o índice de texto completo (síncrono)
Apaga o índice de texto completo da loja e o recria com os produtos ativos. Diferente de meili/reindex, esta chamada é síncrona: só responde quando termina, o que em catálogos grandes pode levar minutos. Não depende do módulo search-management. Sem corpo.
Exemplo de requisição
curl "$BASE_URL/api/v1/admin/search/meili/status" -H "Authorization: Bearer $TOKEN"
curl -X POST "$BASE_URL/api/v1/admin/search/meili/reindex" -H "Authorization: Bearer $TOKEN"Resposta
{
"meilisearch_available": false,
"meilisearch_url": "(not configured)",
"total_indexed": 6012,
"last_indexed_at": "2026-10-10T03:02:11Z",
"index_stats": { "number_of_documents": 6012, "is_indexing": false },
"engine": "vector",
"engine_label": "Busca vetorial",
"engine_url": "https://busca.example.com",
"available": true,
"reindex_available": true
}{ "message": "reindex started", "status": "accepted", "engine": "meilisearch" }{ "message": "reindex completed" }Campos do estado
enginestringmeilisearchvectordatabaseengine_labelstringengine_urlstringdatabase.availablebooleantrue quando o motor ativo está conectado e atendendo.reindex_availablebooleantrue quando o motor tem um índice que pode ser reconstruído (false em database).meilisearch_availablebooleanmeilisearch_urlstring(not configured) quando não há.total_indexedintegerlast_indexed_atstringindex_statsobjectnumber_of_documents, is_indexing...). O conteúdo varia com o motor.Erros
| Status | Quando | Corpo de exemplo |
|---|---|---|
| 401 | Token ausente ou expirado | {"error":"invalid or expired token"} |
| 403 | Falta manage_settings | {"error":"insufficient privileges","required":"manage_settings"} |
| 403 | Módulo search-management desligado (rotas meili/*) | {"error":"module_disabled","module":"search-management"} |
| 503 | meili/reindex em loja que só tem busca no banco | {"error":"no rebuildable search index for this tenant","detail":"search is served directly from the database (no Meilisearch/vector index configured)"} |
| 500 | Falha ao criar o índice, ler o estado ou reindexar | {"error":"failed to ensure meilisearch index","detail":"..."} |