Busca Meilisearch
Busca de produtos direto no índice Meilisearch da loja, para lojas que o usam, com o mesmo propósito da busca principal e outro formato de resposta.
Algumas lojas mantêm, além do catálogo, um índice no mecanismo de busca Meilisearch. Esta rota consulta esse índice. Ela existe para vitrines que já foram escritas contra ele; para uma integração nova, use Buscar produtos, que funciona em todas as lojas e é a única que devolve as facetas de características.
Se a loja não usa Meilisearch, a rota responde 503 e a vitrine deve cair para /search. Antes de chamar, você pode ler GET /api/v1/storefront/settings/search: o campo semantic_search_enabled indica qual rota a loja espera que a página de resultados use.
Diferenças em relação a /search: os filtros se chamam category e vendor (não category_id e vendor_id), o formato do produto é o do índice (com vendor_name, category_name, brand), as facetas vêm em facets com value/label/count e não há did_you_mean, redirect_url nem registro de busca. Fixar e rebaixar produtos (vitrine regrada) valem nas duas rotas. Preço, avaliação e estoque seguem as mesmas regras de visibilidade: sem estoque, a rota esconde também produtos sem controle de estoque que tenham quantidade zero, o que /search não faz.
/api/v1/storefront/search/meiliPúblicaBuscar produtos no índice Meilisearch
Parâmetros de consulta
qstringcategoryuuidvendoruuidbrandstringmin_priceintegermax_priceintegermin_ratingnumberin_stockbooleantrue1sortstringprice_ascprice_descnewestratingsalesname_ascname_descpageintegerpadrão: 1per_pageintegerpadrão: 20Exemplo de requisição
curl "$BASE_URL/api/v1/storefront/search/meili?q=camiseta&sort=price_asc&per_page=12"Resposta
{
"products": [
{
"id": "db033935-75ea-4b6f-abbb-13d0fcd6386d",
"name": "Camiseta Lite Verde 00146",
"slug": "camiseta-lite-verde-00146-146",
"sku": "CAM-00146",
"price": 39990,
"list_price": 0,
"category_id": "8fcaf422-1631-4282-b503-85cc57380649",
"category_name": "Camisetas",
"vendor_id": "94bd7e9a-fdad-4d01-8fc2-ba9d677d8b36",
"vendor_name": "Loja Seller Teste",
"brand": "Eco",
"image_url": "/uploads/dfe2555e-bfd0-41a8-9fa1-9586999f3798/product/db033935-75ea-4b6f-abbb-13d0fcd6386d/foto.png",
"status": "A",
"in_stock": true,
"rating": 4.9,
"sales_count": 12,
"tags": [],
"created_at": 1791687385
}
],
"total": 158,
"page": 1,
"per_page": 12,
"total_pages": 14,
"query": "camiseta",
"processing_time_ms": 3,
"facets": {
"categories": [{ "value": "8fcaf422-1631-4282-b503-85cc57380649", "label": "Camisetas", "count": 158 }],
"vendors": [{ "value": "94bd7e9a-fdad-4d01-8fc2-ba9d677d8b36", "label": "Loja Seller Teste", "count": 158 }],
"brands": [{ "value": "Eco", "label": "Eco", "count": 1 }]
}
}Este exemplo mostra a forma da resposta; a loja de teste usada na documentação não tem Meilisearch, então os valores são ilustrativos.
Campos da resposta
productsarrayname_pt_br, description, category_ids, approval_status e vendor_active.products[].iduuidproducts[].namestringproducts[].slugstringproducts[].skustringproducts[].priceinteger0 com price_redacted: true para visitante em loja que esconde preço.products[].list_priceinteger0 quando não existe (aqui o campo é sempre numérico).products[].category_iduuidproducts[].category_namestringproducts[].vendor_iduuidproducts[].vendor_namestringproducts[].brandstringproducts[].image_urlstringproducts[].statusstringA (ativo).products[].in_stockbooleantrue quando a quantidade em estoque é maior que zero.products[].ratingnumberproducts[].sales_countintegersales.products[].tagsarrayproducts[].created_atintegertotalintegerpageintegerper_pageintegertotal_pagesintegerquerystringprocessing_time_msintegerfacetsobject{value, label, count} em categories, vendors e brands. label é o nome para exibir.Erros
| Status | Quando | Corpo |
|---|---|---|
| 401 | A loja exige login para navegar e a chamada não tem token | {"error":"shopping_requires_login","message":"this storefront requires login to browse"} |
| 500 | O mecanismo recusou a consulta | {"error":"meilisearch query failed","detail":"..."} |
| 503 | A loja não usa Meilisearch | {"error":"search service unavailable","detail":"meilisearch not configured"} |