Para agentes de IA: um índice de documentação está disponível em https://www.mongodb.com/pt-br/docs/llms.txt — as versões de markdown de todas as páginas estão disponíveis anexando .md a qualquer caminho de URL.
Menu Docs

Implemente o MongoDB Search e o Vector Search

Você pode implantar o MongoDB Search e a pesquisa vetorial em seu cluster Kubernetes para criar experiências de pesquisa poderosas diretamente em seus aplicativos. Usando o MongoDB Search e a pesquisa vetorial, você pode criar recursos de pesquisa de texto tradicionais e de pesquisa vetorial com tecnologia de IA que sincronizam automaticamente com um banco de dados MongoDB no local. Essa abordagem elimina a necessidade de manter sistemas separados em sincronização, ao mesmo tempo em que fornece recursos de pesquisa avançados. Para aprender mais, consulte:

Para habilitar as funcionalidades de pesquisa, como pesquisa de texto completo e pesquisa semântica em implantações locais, você deve implantar o processo MongoDB Search e pesquisa vetorial (mongot) e conectá-lo à sua implantação de banco de dados MongoDB (mongod). A implantação do mongot é opcional e é necessária somente se você planeja utilizar os recursos de pesquisa que ela oferece.

O processo do banco de dados MongoDB (mongod) atua como proxy para todas as query de pesquisa para mongot. O mongod encaminha a query para mongot, que a processa. O mongot retorna os resultados da query para o mongod, que então encaminha os resultados para você. Você nunca interage diretamente com o mongot.

Cada processo do mongot tem seu próprio volume persistente que não é compartilhado com o banco de dados ou outros nós de pesquisa. O armazenamento é usado para manter índices que são criados a partir dos dados obtidos continuamente do banco de dados. As definições do índice (metadados) são armazenadas no próprio banco de dados .

O mongot executa as seguintes ações:

  • Gerencia o índice.

    O mongot é responsável por atualizar as definições de índice no banco de dados.

  • Obtém os dados do banco de dados.

    Os nós do mongot estabelecem conexões permanentes com o banco de dados em tempo real.

  • Processa queries de pesquisa.

    When mongod receives a $search, $searchMeta, or $vectorSearch query, it directs the query to one of the mongot nodes. The mongot that receives the query processes the query, aggregates the data, and returns the results to mongod, which it forwards to the user.

Os componentes do mongot são fortemente associados a um único conjunto de réplicas MongoDB e não podem ser compartilhados entre vários bancos de dados ou conjuntos de réplicas. Para uma implantação de conjunto de réplicas, um grupo de nós de pesquisa dedicados atende ao conjunto de réplicas. Para um cluster fragmentado, cada fragmento mantém seu próprio grupo independente de mongot nós. Os fragmentos não compartilham instâncias mongot.

A conectividade de rede entre mongot e mongod vai em ambas as direções:

  • mongot estabelece conexão com o conjunto de réplicas para obter os dados usados para construir índices e executar query.

  • mongod conecta-se ao mongot para encaminhar operações relacionadas à pesquisa, como gerenciamento de índice e consulta de dados.

O campo spec.clusters[].replicas controla quantas instâncias do mongot o Operador Kubernetes implanta. Para uma origem do conjunto de réplicas, o spec.clusters[].replicas define o número total de pods do mongot. Para uma origem de cluster fragmentado, spec.clusters[].replicas define o número de mongot pods por fragmento.

Se você definir spec.clusters[].replicas como um valor maior que 1, deverá colocar um balanceador de carga L7 entre mongod e os pods mongot. O processo mongod abre uma única conexão TCP de longa duração para mongot, portanto, um balanceador de carga L4 não pode distribuir queries em várias instâncias mongot — todo o tráfego flui por essa conexão. Um balanceador de carga L7 entende HTTP/2 e gRPC, o que lhe permite distribuir fluxos gRPC individuais em pods mongot enquanto fixa cada fluxo em um único mongot durante o cursor de query.

A arquitetura de implantação de pesquisa difere pouco com ou sem o Kubernetes Operator. O Kubernetes operador simplifica as etapas necessárias para implantar nós de pesquisa totalmente funcionais, especialmente quando o banco de dados também é gerenciado pelo Kubernetes operador.

Para implantar, você aplica o MongoDBSearch Custom recurso (CR), que o Operador do Kubernetes pega e começa a distribuir mongot pods e solicita armazenamento persistente especificado no spec. O MongoDB Search e a pesquisa vetorial implementados por meio do Kubernetes operador podem direcionar um conjunto de réplicas do MongoDB ou um cluster implantado pelo Kubernetes operador dentro do mesmo cluster do Kubernetes, ou uma implantação externa completamente independente do MongoDB (conjunto de réplicas ou cluster). Para aprender como implantar e configurar o mongot para usar:

Para usar o MongoDB Search e a pesquisa vetorial em seu:

  • A implantação da MongoDB Community , você deve ter um MongoDB 8.2 totalmente funcional ou posterior conjunto de réplicas ou cluster fragmentado implantado dentro de um cluster Kubernetes usando o Operador Kubernetes.

  • A implantação do MongoDB Enterprise , você deve ter um conjunto de réplicas totalmente funcional do MongoDB 8.2 ou posterior ou um cluster fragmentado implantado de uma das seguintes maneiras:

    • Dentro de um cluster Kubernetes usando o Operador Kubernetes

    • Fora de um cluster Kubernetes

  • Instância do Cloud Manager ou do Ops Manager

Antes de começar, considere o seguinte:

A tabela a seguir mostra as tarefas de configuração que o Kubernetes Operator executa automaticamente e as ações que você deve executar para implantar com êxito o MongoDB Search e a pesquisa vetorial no Kubernetes e conectar-se a um conjunto de réplicas do MongoDB ou cluster no Kubernetes ou a uma implantação externa do MongoDB.

Tarefa
(Dentro do Kubernetes)
Executado por
(MongoDB externo)
Realizado por

Deploy Ops Manager inside Kubernetes

Kubernetes Operator

Kubernetes Operator

Implemente o Cloud Manager ou o Ops Manager fora do Kubernetes

você

você

Distribua o conjunto de réplicas do MongoDB ou o cluster fragmentado

Kubernetes Operator

você

Criar recurso personalizado do MongoDBSearch

você

você

Fornecer string de conexão para a implantação do MongoDB

Kubernetes Operator

você

Criar YAMLde configuração mongot

Kubernetes Operator

Kubernetes Operator

Definir os parâmetros necessários do conjunto de réplicas em cada processo mongod

Kubernetes Operator

você

Criar usuário para mongot com função searchCoordinator

Kubernetes Operator e você aplicando o recurso MongoDBUser

você

Configurar conjunto de réplicas do MongoDB com um usuário que tenha as permissões necessárias para consultar a pesquisa

você

você

Criar índices de MongoDB Search e Vector Search

você

você

Exponha pods de pesquisa ou balanceador de carga externamente para conectar a partir de cada nó mongod

Não necessário

você

Exponha mongod pods externamente para conexão a partir de mongot nós

Não necessário

você

Configurar balanceador de carga gerenciado (quando spec.clusters[].replicas é maior que 1)

Kubernetes Operator

Kubernetes Operator

Configurar balanceador de carga não gerenciado (quando spec.clusters[].replicas é maior que 1)

você

você

Provisionar certificados TLS por fragmento (clusters fragmentados com TLS)

você

você

Expor o balanceador de carga externamente ( MongoDB externo + LS gerenciado)

Não necessário

você

A imagem a seguir ilustra a configuração de segurança para o processo mongot. Se a implantação do MongoDB estiver dentro do cluster Kubernetes, o operador Kubernetes configura automaticamente a autenticação de arquivo de chave para MongoDB Search e pesquisa vetorial. Se a implantação do MongoDB for externa, você deve criar um secret do Kubernetes contendo as credenciais do arquivo de chave do conjunto de réplicas e referenciá-lo no MongoDBSearch CR.

Diagrama mostrando a autenticação do arquivo-chave e a configuração do TLS para pesquisa.
clique para ampliar

O processo mongot autentica as conexões mongod usando mTLS. Quando você habilita o TLS, o processo mongot usa o certificado TLS da implantação do MongoDB como o certificado do cliente para autenticação. Este certificado é verificado em relação ao certificado CA com o qual mongot está configurado. Para que a autenticação funcione corretamente, você deve configurar mongot e mongod com o TLS habilitado.

Quando configurado para indexar um recurso MongoDB no mesmo cluster do Kubernetes, o operador do Kubernetes propaga automaticamente o certificado CA do mongod para mongot e habilita o mTLS para conexões de query de pesquisa se os recursos do MongoDB e MongoDBSearch estiverem configurados para TLS. Se o conjunto de réplicas do MongoDB for implantado fora do Kubernetes, você deverá criar um segredo do Kubernetes contendo o certificado CA do conjunto de réplicas e referenciá-lo no campo MongoDBSearch.spec.source.external.tls.ca para habilitar a autenticação mTLS para solicitações de query de pesquisa.

O MongoDBSearch pode proteger dados e credenciais em trânsito usando TLS. Para comandos de gerenciamento de índice e query de pesquisa, defina o campo spec.security.tls e forneça um certificado TLS. Você pode definir este campo para um objeto vazio ({}) para habilitar TLS com as configurações padrão.

Descontinuado desde a versão 1.8.0: spec.security.tls.certificateKeySecretRef é descontinuado. Para implantações de conjunto de réplicas, o operador do Kubernetes ainda oferece suporte a certificateKeySecretRef, mas você deve migrar para spec.security.tls.certsSecretPrefix. Para implantações de cluster sharded, não é possível usar certificateKeySecretRef porque o operador Kubernetes lê um segredo de certificado de servidor mongot separado para cada shard.

spec.security.tls.certsSecretPrefix é um campo opcional. Quando você o especifica, o Kubernetes Operator acrescenta <certsSecretPrefix>- a todos os nomes secretos de certificado que lê. O Operador do Kubernetes lê os seguintes segredos de certificado:

Topologia de cluster
mongot Certificado

réplicaSet

[<certsSecretPrefix>-]<name>-search-cert

cluster fragmentado

[<certsSecretPrefix>-]<name>-search-0-<shardName>-cert (per shard)

Se você definir spec.clusters[].loadBalancer.managed, o certificado do cliente do balanceador de carga será [<certsSecretPrefix>-]<name>-search-lb-0-client-cert. A tabela a seguir mostra os certificados de servidor do balanceador de carga:

Topologia de cluster
Certificado

réplicaSet

[<certsSecretPrefix>-]<name>-search-lb-0-cert

cluster fragmentado

[<certsSecretPrefix>-]<name>-search-lb-0-<shardName>-cert

O certificado TLS deve ser emitido e assinado pela mesma CA que emitiu o certificado CA que o conjunto de réplicas MongoDB utiliza.

Quando MongoDBSearch e MongoDB são implantados pelo Operador Kubernetes, a configuração subjacente do mongot e mongod é em grande parte manipulada pelo próprio Operador Kubernetes. Se você implantar o conjunto de réplicas do MongoDB fora do cluster do Kubernetes:

  • .spec.source.external.tls o campo deve ser preenchido com um secret do Kubernetes contendo o mesmo certificado CA que você usou para configurar o mongod.

  • searchTLSMode O parâmetro deve ser definido como requireTLS na configuração mongod.

Sem um balanceador de carga, o mongod conecta diretamente ao mongot utilizando mTLS. O mongod apresenta seu próprio certificado de cliente e o mongot o valida em relação a uma CA confiável.

Se você configurar um balanceador de carga gerenciado (spec.clusters[].loadBalancer.managed), o proxy Envoy encerra a conexão mTLS do mongod e estabelece uma nova conexão mTLS para o mongot. Como o balanceador de carga encerra e restabelece a conexão, ele usa seu próprio certificado de cliente ao se conectar ao mongot, não ao certificado mongod original. A CA mongot deve confiar na autoridade de certificação que emitiu o certificado de cliente do balanceador de carga. O Kubernetes Operator gerencia a configuração do Envoy TLS automaticamente. Exige os seguintes certificados:

  • Certificado de servidor para o proxy Envoy, ao qual o mongod se conecta. O balanceador de carga usa esse certificado para encerrar a conexão mTLS de entrada.

  • Certificado do cliente para o proxy Envoy, que o balanceador de carga apresenta ao mongot ao estabelecer a conexão mTLS upstream.

Provisione estes certificados como Segredos Kubernetes seguindo a convenção de nomenclatura que o spec.security.tls.certsSecretPrefix define. Consulte Configurações de pesquisa do MongoDB e pesquisa vetorial para obter o padrão de nomenclatura completo.

Cada pod mongot grava continuamente arquivos FTDC em /mongot/data/diagnostic.data/ dentro do pod. FTDC é um fluxo de diagnóstico binário que captura o estado interno detalhado do mongot e é o artefato primário que o Suporte do MongoDB usa para diagnosticar problemas de pesquisa. O FTDC está habilitado por padrão. Para aprender a copiar arquivos FTDC para um caso de suporte, consulte Solucionar problemas de implantação mongot.

O operador Kubernetes monta um PersistentVolumeClaim em cada pod mongot em /mongot/data usando um volumeClaimTemplate no StatefulSet de pesquisa, e mongot grava seus arquivos FTDC em /mongot/data/diagnostic.data/ nesse volume. Como os dados residem em um PersistentVolumeClaim, eles sobrevivem a reinicializações e reagendamentos de pods: quando o StatefulSet substitui um pod, ele anexa o mesmo PersistentVolumeClaim. Você configura este volume com a especificação.clusters[].persistence configuração no recurso MongoDBSearch.