Pular para o conteúdo principal

Busca gerenciada

A busca gerenciada é um serviço de busca de texto (barra de busca de produto, catálogo, documentação, logs de aplicação) que a plataforma cria, atualiza, monitora e copia para você. Ele é um nó do grafo do ambiente, como um banco ou um volume: você o adiciona no canvas (ou no coda.yaml), liga as aplicações a ele por aresta e usa as variáveis que ele publica.

O serviço não tem endereço público: só as aplicações ligadas por aresta no mesmo ambiente o alcançam. Se o navegador precisa buscar, faça a busca pela sua API.

Escolher o motor​

MotorPara quemDestaquesLimites
Meilisearch (padrão)todos os planosResposta em milissegundos, tolerância a erro de digitação, facetas, filtros, sinônimos e busca híbrida. Pouca memória (a partir de 512 MiB).Uma instância só (sem alta disponibilidade). Snapshots só restauram na mesma versão.
OpenSearch (avançado)planos com o recurso OpenSearch (Business e Enterprise)Agregações analíticas, consultas complexas, scripts Painless, réplicas e shards. 1 ou 3 instâncias.A partir de 2 GiB por instância. Sem Dashboards.

O motor é escolhido na criação e não muda depois. Para trocar de motor, crie outro nó e reindexe a partir da sua fonte de dados.

Criar o serviço​

No canvas do ambiente, adicione uma Busca e escolha:

CampoDescrição
Motormeilisearch ou opensearch. Não muda depois de aplicado.
VersãoA série do motor (1 no Meilisearch, 3 no OpenSearch).
Tamanhosearch-s1 a search-m2 (Meilisearch) ou os-m1 a os-l1 (OpenSearch).
InstânciasSó OpenSearch: 1 ou 3. O máximo depende do plano.
Disco (GiB)Só aumenta.
Janela de manutençãoQuando as atualizações de versão menor podem ser aplicadas.
Agenda e retenção de snapshotHorário do snapshot diário e por quantos dias guardá-lo (o teto depende do plano).

O mesmo serviço no coda.yaml:

nodes:
busca:
kind: search
config:
engine: meilisearch
engineMajor: "1"
size: search-s1
backupSchedule: "0 2 * * *"
backupRetentionDays: 7
api:
kind: application
# ...
edges:
- from: api
to: busca
network: { ports: [7700] }
reference: true

Conectar a aplicação​

Ligue a aplicação ao serviço com uma aresta de rede na porta do motor (7700 no Meilisearch, 9200 no OpenSearch) e de referência. As variáveis publicadas pelo nó:

VariávelMotorConteúdo
SEARCH_ENGINEambosmeilisearch ou opensearch
SEARCH_HOST, SEARCH_PORT, SEARCH_URLambosEndereço interno (http://busca:7700 ou https://logs:9200)
SEARCH_API_KEY (secreta)MeilisearchChave da aplicação: busca, documentos, índices, tarefas e configurações
SEARCH_READONLY_KEY (secreta)MeilisearchChave só de busca
SEARCH_USERNAME, SEARCH_PASSWORD (secretas)OpenSearchUsuário da aplicação
SEARCH_CA_CERT (secreta)OpenSearchCA do certificado TLS do serviço

Na aplicação, referencie as variáveis com ${{ busca.SEARCH_URL }} e ${{ busca.SEARCH_API_KEY }}.

Meilisearch com o SDK JavaScript:

import { MeiliSearch } from "meilisearch";

const client = new MeiliSearch({ host: process.env.SEARCH_URL, apiKey: process.env.SEARCH_API_KEY });
await client.index("produtos").addDocuments([{ id: 1, nome: "Camiseta azul" }]);
const resultado = await client.index("produtos").search("camiseta");

OpenSearch com o cliente oficial em Python:

import os
from opensearchpy import OpenSearch

client = OpenSearch(
hosts=[os.environ["SEARCH_URL"]],
http_auth=(os.environ["SEARCH_USERNAME"], os.environ["SEARCH_PASSWORD"]),
ca_certs="/tmp/search-ca.pem", # grave o conteúdo de SEARCH_CA_CERT neste arquivo na inicialização
)
client.index(index="produtos", body={"nome": "Camiseta azul"}, refresh=True)

Chaves e permissões​

A plataforma guarda a chave mestra (Meilisearch) e o usuário administrador (OpenSearch); eles nunca chegam à sua aplicação.

  • Meilisearch: a chave da aplicação faz busca, gestão de documentos, índices, tarefas e configurações. Ela não cria chaves, dumps nem snapshots e não acessa recursos experimentais. A chave somente leitura só busca.
  • OpenSearch: o usuário da aplicação lê e escreve nos seus índices (qualquer nome que não comece com .) e consulta a saúde do cluster. Ele não altera configurações do cluster, não usa repositórios de snapshot nem acessa índices de sistema.

Para trocar as credenciais, use Rotacionar credencial na aba Conexão. A troca entra no rascunho do ambiente e, ao aplicar, as aplicações ligadas reiniciam com os valores novos. Há uma janela curta em que a chave antiga é recusada (401).

Snapshots e restauração​

O serviço tira um snapshot por dia no horário escolhido e o guarda fora do cluster, no armazenamento de backup da sua organização. Você também pode pedir um snapshot sob demanda com um rótulo (por exemplo, antes-reindex). O número de snapshots sob demanda por dia depende do plano.

A restauração sempre cria um nó novo no rascunho do ambiente:

  • No mesmo ambiente (Developer): escolha o snapshot na aba Snapshots e dê o nome do nó novo.
  • Em outro ambiente do projeto (Admin): o último snapshot concluído é restaurado no ambiente escolhido.

Depois de aplicar, ligue as aplicações ao nó restaurado e remova o antigo, se quiser. Snapshots do Meilisearch só restauram na mesma versão: restaure e depois atualize.

Ao remover o nó, a plataforma tira um snapshot final antes de apagar os dados e o mantém pelo prazo do plano; ele pode ser restaurado enquanto não expirar.

Painel​

A aba Visão geral mostra a saúde, o disco e a memória, buscas por segundo, a latência p95, a indexação em andamento e o último snapshot. A aba Índices lista os 50 maiores índices com documentos e tamanho. O painel nunca lê o conteúdo dos documentos.

Atualizações​

Versões menores são aplicadas na janela de manutenção, com aviso 7 dias antes. A mudança de série (por exemplo, OpenSearch 3 para 4) é pedida por um Admin na aba Snapshots: a plataforma tira um snapshot antes e troca a versão; no Meilisearch o serviço fica indisponível durante a troca.

Limites por plano​

O serviço de busca conta nas mesmas cotas dos outros serviços de dados (número de serviços, vCPU, memória, disco, espaço de backup, instâncias e retenção). Só a busca tem duas chaves próprias:

RecursoStarterProBusinessEnterprise
Motor OpenSearchnãonãosimsim
Snapshots sob demanda por dia131050

A cobrança é por vCPU, memória e disco do serviço (incluindo o agente da plataforma) e pelo espaço dos snapshots.