visão geral do Atlas Search
Nesta página
O Atlas Search do MongoDB permite indexação de texto refinada e query de dados em seu cluster Atlas. Ele permite a funcionalidade de pesquisa avançada para seus aplicativos sem nenhum gerenciamento adicional ou sistema de pesquisa separado junto com seu banco de dados. A Pesquisa do Atlas fornece opções para vários tipos deanalisadores de texto , uma linguagem de query avançada que usa Atlas Search aggregation pipeline stages como $search
e $searchMeta
em conjunto com outros MongoDB aggregation pipeline stages e resultados baseados em pontuação classificação.
Dica
Experimente rapidamente o Atlas Search sem precisar de uma conta, cluster ou coleção do Atlas, com o Atlas Search Playground. Para saber mais, consulte a documentação.
Fundamentos do Atlas Search
Os conceitos a seguir formam a base do Atlas Search e são essenciais para otimizar seu aplicativo.
Indexação
No contexto da pesquisa, um índice é uma estrutura de dados que categoriza os dados em um formato facilmente pesquisável. Os índices de pesquisa permitem a recuperação mais rápida de documentos que contêm um determinado termo, sem a necessidade de examinar toda a coleção. Embora os índices do Atlas Search e os índices do MongoDB tornem a recuperação de dados mais rápida, observe que eles não são os mesmos. Como o índice no final de um livro, um índice de pesquisa é um mapeamento entre os termos e os documentos que contêm esses termos. Os índices de pesquisa também contêm outros metadados relevantes, como as posições dos termos nos documentos.
A criação de pelo menos um índice de pesquisa geralmente é necessária em qualquer aplicativo de pesquisa. Para obter mais informações, consulte Índices do Atlas Search.
Tokenização
Ao criar um índice de pesquisa, os dados devem primeiro ser transformados em uma sequência de tokens ou termos. Um analisador facilita esse processo por meio de etapas, incluindo:
Tokenização: Divisão das palavras de uma string em tokens indexáveis. Por exemplo, dividir uma frase com espaços e pontuação.
Normalização: Organizar os dados para que sejam representados de forma consistente e mais fácil de analisar. Por exemplo, transformar o texto em letras minúsculas ou remover palavras indesejadas chamadas palavras de parada.
Stemming: reduzir as palavras à sua forma raiz. Por exemplo, ignorar sufixos, prefixos e formas de palavras no plural.
As particularidades da tokenização são específicas da linguagem e podem exigir a realização de escolhas adicionais. Qual analisador usar depende dos seus dados e aplicativo. Para obter mais informações, consulte Processar dados com analisadores.
Consultando
As queries de pesquisa consultam o índice para retornar um conjunto de resultados. As queries de pesquisa são diferentes das queries de banco de dados tradicionais, pois destinam-se a atender a necessidades de informações mais gerais. Onde uma query de banco de dados deve seguir uma sintaxe estrita, as queries de pesquisa podem ser para correspondência simples de texto, mas também podem procurar frases, números ou intervalos de datas semelhantes, ou usar expressões regulares ou curingas.
Para obter mais informações, consulte Queries do Atlas Search.
Pontuação
Cada documento recebe uma pontuação de relevância que permite que os resultados da query sejam retornados em ordem, começando com a maior relevância e terminando na menor relevância. Na forma mais simples de pontuação, os documentos pontuam mais alto se o termo de query aparecer com frequência em um documento e mais baixo se o termo de query aparecer em muitos documentos da coleção. A pontuação também pode ser personalizada. Adaptar a pesquisa a um domínio específico geralmente significa personalizar a pontuação padrão baseada em relevância, por meio de aumento, decaimento ou outras opções de modificação.
Para obter mais informações, consulte Documentos de pontuação.
Disponibilidade do Atlas Search
O Atlas Search está disponível apenas nas instâncias do Atlas que executam o MongoDB 4.2 ou versões superiores. Para determinados recursos, o Atlas Search pode exigir uma versão específica do MongoDB. A tabela seguinte lista os recursos de Atlas Search que exigem versões específicas do MongoDB.
Atlas Search Feature | Versão do MongoDB para recurso |
---|---|
5.0.4+, 6.0+, 7.0+ | |
6.0+, 7.0+ | |
5.0.6+, 6.0+, 7.0+ | |
5 . 0 + | |
6.0+, 7.0+ | |
6.0+, 7.0+ | |
5.0+, 6.0+, 7.0+ | |
6.0+, 7.0+ | |
6.0+, 7.0+ | |
6.0+, 7.0+ | |
Implantação local do Atlas Search com a Atlas CLI | 6.0+, 7.0+ |
6.0.13+, 7.0.5+ |
Atlas Search não é suportada para coleções de séries temporais .
arquitetura do atlas search
O processo mongot
do Atlas Search usa Apache Lucene e é executado em conjunto com o mongod
em cada nó do cluster do Atlas. O processo do mongot
:
Cria índices de Atlas Search com base nas regras na index definition para a collection.
Monitora change streams para o estado atual dos documentos e alterações de índice para as collections para as quais você definiu Atlas Search indexes.
Processa queries do Atlas Search e retorna documentos correspondentes.
Arquitetura de origem armazenada
Se você definir campos de origem armazenados no índice da Atlas Search, o processo de mongot
armazenará os campos especificados e, para documentos correspondentes, retornará os campos armazenados diretamente de mongot
em vez de fazer uma pesquisa completa de documentos no banco de dados se você especificar a opção returnStoredSource em sua query.
Arquitetura de Nós de Pesquisa
Para Atlas clusters dedicados (M10
ou superior) fragmentados e não fragmentados em qualquer provedor de nuvem, você pode implantar nós de Atlas Search separados que executam somente o processo mongot
para isolamento do volume de trabalho. O Atlas implementa nós de Atlas Search com cada cluster ou com cada shard no cluster. Por exemplo, se você implantar 2 Nós do Atlas Search para um cluster com 3 shards, o Atlas implantará 6 Nós Atlas Search , 2 por shard.
A distribuição de nós de pesquisa separados oferece os seguintes benefícios:
Dimensiona o armazenamento independente do Cluster MongoDB.
Dimensiona a carga de query independentemente do MongoDB.
Quando você distribui nós de pesquisa separados, os processos mongot
são executados em nós de pesquisa separados que você pode configurar independentemente.
Você pode configurar os nós de pesquisa para executar o processo mongot
separadamente dos nós da base de dados que executam o processo mongod
no cluster do Atlas. Você também pode configurar o número de nós de pesquisa e a quantidade de recursos provisionados para cada nó de pesquisa.
Não é possível distribuir nós de pesquisa separadamente para clusters sem servidor . Para saber mais sobre como implantar nós de pesquisa separadamente, consulte Nós de pesquisa para isolamento de volume de trabalho. Para implementar os nós de pesquisa a partir da UI ou daAPI , consulte Criar um cluster.
Ao implantar nós de pesquisa separados, o Atlas atribui automaticamente um mongod
para cada mongot
. O mongot
comunica com o mongod
para ouvir e sincronizar as alterações de índice para os índices que armazena.
Se você excluir todos os nós de pesquisa em seu cluster, haverá uma breve interrupção no processamento dos resultados da query de pesquisa. Para saber mais, consulte Modificar um cluster. Se você excluir seu cluster do Atlas, o Atlas pausará e então excluirá todas as implantações do Atlas Search associadas (mongot
processos).
Observação
Os SSDs locais usados para nós de pesquisa exigem uma sobrecarga de armazenamento de 20% para permitir operações de indexação.
Índices de pesquisa do Atlas
Um índice do Atlas Search é uma estrutura de dados que categoriza os dados em um formato facilmente pesquisável. É um mapeamento entre os termos e os documentos que contêm esses termos. Os índices do Atlas Search permitem a recuperação mais rápida de documentos usando determinados identificadores. Você deve configurar um índice do Atlas Search para fazer query em dados em seu cluster Atlas usando o Atlas Search.
Você pode criar um índice de Pesquisa do Atlas em um único campo ou em múltiplos campos. Recomendamos que você indexe os campos que usa regularmente para classificar ou filtrar seus dados para recuperar rapidamente os documentos que contêm os dados relevantes em tempo de query.
Você pode especificar os campos para indexar utilizando os seguintes métodos:
Mapeamentos dinâmicos, que permitem que o Atlas Search indexe automaticamente todos os campos dos tipos suportados em cada documento. Isso ocupa espaço em disco e pode afetar negativamente o desempenho do cluster.
Mapeamentos estáticos, que permitem que você identifique seletivamente os campos para indexar. Se os campos contiverem dados polimórficos, a Atlas Search indexará apenas os documentos que correspondem ao mapeamento na definição de índice e ignorará os documentos que contêm valores que não correspondem ao mapeamento especificado na definição de índice para os campos.
Embora os dados armazenados no Atlas Search não sejam uma cópia idêntica dos dados da collection no seu cluster do Atlas, os índices do Atlas Search ainda ocupam algum espaço em disco e memória. Se você habilitar a opção store
para campos que contêm valores de string ou se você configurar os campos de origem armazenados no seu índice, o Atlas Search armazenará uma cópia idêntica dos campos especificados no disco, que podem ocupar espaço em disco.
O Atlas Search oferece analisadores integrados para a criação de termos indexáveis que corrigem as diferenças de pontuação, capitalização, palavras vazias e muito mais. Os analisadores aplicam regras de análise e linguagem à query. Você também pode criar um analisador personalizado usando filtros de caracteres, tokenizadores e filtros de token integrados disponíveis ee integrados. Para saber mais sobre os analisadores internos e personalizados, consulte Process Data with analyzers.
Para saber mais sobre o suporte da Atlas Search para outros tipos de dados, consulte Tipos de dados. O processo mongot
armazena os campos indexados e o campo _id
no disco por índice para as coleções no cluster.
Se você alterar um índice existente, o Atlas Search reconstrói o índice sem tempo de inatividade. Isso permite que você continue usando o índice antigo para queries novas e existentes até que a recriação do índice seja concluída. Se você distribuiu Nós de pesquisa separados, o Atlas Search também reconstrói Índices para os seguintes eventos:
Adicionar nós de pesquisa
Nós de pesquisa de escala
Alterações internas
mongot
que exigem uma ressincronização do índice (como alguns recursos do Atlas Search que exigem uma atualização do índice)
Se você distribuiu nós de pesquisa separados, o Atlas distribuirá automaticamente nós de pesquisa adicionais durante a reconstrução do índice para manter o índice antigo atualizado e disponível para consultas enquanto o novo índice é criado.
Se você fizer alterações na collection para a qual definiu os índices da Atlas Search, os dados mais recentes podem não estar disponíveis imediatamente para query. No entanto, o mongot
monitora os fluxos de alterações, o que permite atualizar cópias armazenadas de dados, e os índices de Atlas Search são eventualmente consistentes.
Observação
Para Nós de Pesquisa Dedicados
Adicionar e ajustar shards aciona uma reconstrução do índice do Atlas Search. Durante esta reconstrução do índice, o índice pode não ter os dados mais atuais. Portanto, as queries de dados nesses shards podem falhar ou retornar resultados incorretos.
Se você refragmentar uma collection com índices do Atlas Search, os índices do Atlas Search na collection ficarão indisponíveis quando a operação de refragmentação estiver completa. Você deve reconstruir seus índices do Atlas Search assim que a operação de refragmentação for concluída.
Observação
O Atlas Search não aceita a criptografia de índices do Atlas Search com chaves de criptografia usando o Gerenciamento de chave de cliente na UI do Atlas.
Dica
Veja também: Aprenda Assistindo
Assista a este vídeo para uma visão geral dos índices de Pesquisa Atlas. Neste vídeo, você pode aprender mais sobre analisadores e tipo de campo autocomplete do Atlas Search.
Duração: 8 Minutos
Após configurar um índice do Atlas Search para uma coleção, você pode executar queries em relação aos campos indexados.
Queries do Atlas Search
As queries do Atlas Search assumem a forma de um estágio de pipeline de agregação . O Atlas Search fornece os estágios $search
e $searchMeta
, ambos devem ser o primeiro estágio na pipeline da query. Esses estágios podem ser usados em conjunto com outros estágios do pipeline de agregação em seu pipeline de query. Para saber mais sobre esses estágios do pipeline, consulte Escolher o estágio do pipeline de agregação.
A Atlas Search também fornece query e collectors que você pode usar dentro dos estágios de pipeline $search
$searchMeta
de agregação. Os operadores de Pesquisa do Atlas permitem a você localizar e recuperar dados correspondentes da coleção no seu agrupamento do Atlas. O coletor retorna um documento representando os resultados dos metadados de pesquisa.
Você pode usar os operadores da query para fazer query em termos, frases, formas e pontos geográficos, valores numéricos, documentos semelhantes, termos sinônimos e muito mais. Você também pode pesquisar utilizando expressões regex e asteriscos. O operador composto do Atlas Search permite que você combine vários operadores dentro do seu $search
estágio para realizar uma pesquisa complexa e filtrar dados com base no que deve, não deve ou deve estar presente nos documentos retornados pelo Atlas Search. Você pode usar o operador composto para também corresponder ou filtrar documentos no próprio estágio $search
. Executar $match
após $search
tem menos desempenho do que executar $search
com o operador composto .
Para saber mais sobre a sintaxe, as opções e o uso dos operadores da Atlas Search, consulte Usar operadores e coletores em queries do Atlas Search.
Quando você executa uma query, o Atlas Search utiliza a preferência de leitura configurada para identificar o nó no qual executar a query. A query primeiro vai para o processo do mongod
, que é para um cluster de conjunto de mongos
ou para um cluster fragmentado. Para clusters fragmentados, os dados do cluster são mongod
em instâncias e cada mongot
sobre os dados no mesmo mongod
apenas. Portanto, você não pode executar consultas que tenham como alvo um fragmento específico. mongos
direciona as queries para todos os fragmentos, fazendo estas dispersar e reunir queries. Se você usar zonas para distribuir uma coleção fragmentada em um subconjunto dos shards no cluster, o Atlas Search roteará a consulta para a zona que contém os fragmentos da coleção que você está consultando e executará suas $search
queries apenas nos fragmentos onde a coleção está localizada.
O processo do MongoDB roteia a query para mongot
no mesmo nó. O Atlas Search realiza a pesquisa e a pontuação e retorna os IDs dos documentos e outros metadados da pesquisa dos resultados correspondentes para mongod
. O mongod
então realiza uma pesquisa completa do documento implicitamente para os resultados correspondentes e retorna os resultados ao cliente.
Observação
Para Nós de Pesquisa Dedicados
Quando você executa uma query, a query primeiro vai para o processo MongoDB com base na preferência de leitura. O processo mongod
encaminha a query de pesquisa por meio de um balancer de carga no mesmo nó, que distribui as solicitações entre todos os processos mongot
. O Atlas Search mongot
executa a pesquisa e pontuação e retorna os resultados correspondentes para mongod
, que mongod
então retorna ao cliente. Se você usar a opção $search
concurrent em sua query, o Atlas Search ativará o paralelismo intraquery. Para saber mais, consulte Parallelize Query Execution Across Segments.
O Atlas Search associa uma pontuação baseada em relevância a cada documento no conjunto de resultados. A pontuação baseada em relevância permite que Atlas Search devolva documentos na ordem da pontuação mais alta para a mais baixa. Atlas Search pontua os documentos mais alto se o query aparecer com frequência em um documento e mais baixo se o query aparecer em muitos documentos da collection. O Atlas Search também oferece suporte à personalização da pontuação padrão baseada em relevância por meio de aumento, decadência ou outras opções de modificação. Para saber mais sobre como personalizar as pontuações resultantes, consulte Classificar os documentos nos resultados.
Dica
Veja também: Aprenda Assistindo
Assista a este vídeo para ter uma visão geral de pesquisa e rastreamento de suas queries com o Atlas Search. Neste vídeo, você pode aprender mais sobre operadores do Atlas Search e como os documentos de o Atlas Search pontua documentos nos resultados.
Duração: 15 Minutos
Custo dos Nós de Pesquisa
O MongoDB suporta nós de pesquisa separados em clusters dedicados (M10
ou superior). Os nós de pesquisa são distribuídos em instâncias NVMe com uso intensivo de computador. Você deve distribuir um mínimo de dois nós. Você será cobrado diariamente pelo uso de recursos por hora por nó. Para saber mais, consulte Custos de nós de pesquisa.
Próximos passos
Para obter uma experiência prática na criação de índices do Atlas Search e na execução de queries do Atlas Search nos conjuntos de dados de amostra, experimente o Curso do Atlas Search na MongoDB University e os tutoriais nas páginas a seguir:
Você prefere aprender assistindo?
Assista a uma visão geral do Atlas e Atlas Search e comece a configurar o Atlas Search para seus dados. O vídeo demonstra como carregar dados de exemplo no cluster, criar um índice de Atlas Search e executar uma query de exemplo usando Search Tester e Data Explorer.
Duração: 10 Minutos