Menu Docs
Página inicial do Docs
/
MongoDB Atlas
/ /

Desempenho da query do Atlas Search

Nesta página

  • Considere operadores de query e complexidade da consulta
  • Use $search em vez de $text ou $regex
  • Evite $match depois $search
  • Evite $group depois $search
  • Evite $count depois $search
  • Evite $sort depois $search
  • Limite o uso de $skip e $limit após $search
  • Monitorar desempenho
  • Continuar aprendendo

O nível de complexidade das queries do Atlas Search e o tipo deoperadores usados podem afetar o desempenho do banco de dados. Queries altamente complexas com várias cláusulas consomem muitos recursos, assim como as queries que usam o operador regex (expressão regular) ou curinga .

Se sua query incluir várias instruções compostas aninhadas, certifique-se de que não sejam redundantes. Se as cláusulas forem adicionadas programaticamente, considere implementar a lógica na aplicação para evitar a inclusão de cláusulas redundantes nas query. Cada cálculo de pontuação por campo que o mongot executa, como para as cláusulas must e should , aumenta o tempo de execução.

Você pode usar o coletor de facet do Atlas Search para extrair metadados e evitar a execução de várias queries para obter resultados de pesquisa e metadados. Para ver um exemplo, consulte o exemplo de Metadados e resultados de pesquisa.

As queries do Atlas Search são classificadas por pontuação. As queries que retornam um grande número de resultados são mais intensivas em termos de computação porque devem manter o controle de todas as pontuações do conjunto de resultados.

Para aplicativos que dependem fortemente das consultas do MongoDB $text e $regex , use as recomendações a seguir para determinar se deseja refatorar seus aplicativos ou migrá-los para o Atlas Search $search. O aggregation pipeline stage $search fornece recursos que não estão disponíveis por meio dos operadores do MongoDB ou estão disponíveis por meio dos operadores do MongoDB, mas não têm o mesmo desempenho do Atlas Search $search.

A tabela seguinte mostra como MongoDB $regex, $text e Atlas Search $search atendem os requisitos do seu aplicativo.

Se seu aplicativo exigir...
Use...
Porque...
Datastore para respeitar write concerns
Para transações com leituras pesadas após gravações, recomendamos $regex. Para $search, leituras após gravações devem ser raras.
cluster otimizado para desempenho de gravação
Os índices de pesquisa do Atlas não degradam o desempenho de gravação do cluster.
Pesquisando em grandes sets de data
O Atlas Search usa um índice invertido, que permite a rápida recuperação de documentos em escalas muito grandes.
Consciência do idioma
O Atlas Search oferece suporte a muitos analisadores de idiomas que podem tokenizar (criar termos pesquisáveis) idiomas, remover palavras paradas e interpretar diacríticos para melhorar a relevância da pesquisa. Para mais informações, consulte How to Run Multilingual Atlas Search Queries.
Pesquisar texto sem distinção entre letra maiúscula e minúscula
$search oferece mais recursos do que $regex.
Realçando o texto do resultado
O destacamento do Atlas Search permite contextualizar os documentos nos resultados, o que é essencial para queries de linguagem natural.
Queries de pesquisa com reconhecimento geoespacial
O MongoDB $regex e o Atlas Search $search tratam os parâmetros geoespaciais de forma diferente. No MongoDB, as linhas entre as coordenadas são esféricas, o que é adequado para coordenadas de longa distância, como voos aéreos. O Atlas Search usa Lucene, que traça uma linha reta entre as coordenadas e é adequado para curtas distâncias. Para saber mais, consulte Como executar uma query JSON Geo Composto do Atlas Search.
Sistema local ou no local
O Atlas Search não está disponível para implementação local... Atlas Search só está disponível para dados no cluster Atlas.
Conclusão automática de queries de pesquisa

Para preenchimento automático de caracteres (nGrams), o Atlas Search inclui edgeGrams para preenchimento automático da esquerda para a direita, nGrams para preenchimento automático de idiomas que não têm espaço em branco e rightEdgeGram para preenchimento automático de idiomas que você escreve e lê da direita para a esquerda.

Para autocomplete de palavras (wordGrams), Atlas Search inclui o filtro de token shingle, que suporta autocomplete baseado em palavras, concatenando palavras adjacentes para criar um único token.

Para saber mais, consulte o tutorial Como usar o preenchimento automático com o Atlas Search .

Correspondência difusa na entrada de texto
Os operadores de texto e preenchimento automático do Atlas Search oferecem suporte fuzzy à correspondência de para filtrar o texto de entrada e abordar palavras com erros ortográficos (erros de digitação).
Filtragem baseada em várias strings
O composto do Atlas Search oferece suporte à filtragem com base em várias strings.
Pesquisa classificada por pontuação de relevância
O Atlas Search usa o algoritmo BM25 para determinar a pontuação de relevância da pesquisa de documentos. Ele suporta configuração avançada através de expressões do como multiplicar e decaimento gaussiano, bem como analisadores, operadores de pesquisa e sinônimos. Para mais informações,boost consulte Como Executar Consultas Compostas de Pesquisa do Atlas com Campos Ponderados.
Índices parciais
A Atlas Search não suporta indexação parcial.
Partida parcial
Os operadores curinga e de autocompletar do Atlas Search suportam queries de correspondência parcial. Para mais informações, consulte Como Executar Consultas de Atlas Search de Correspondência Parcial.
Índice composto único em arrays
Os índices de termos do Atlas Search são interseccionados em um único índice do Atlas Search e eliminam a necessidade de índices compostos para filtragem em arrays.
Pesquisa de sinônimos
O Atlas Search suporta sinônimos definidos em uma coleção separada, que você pode referenciar em seu índice de pesquisa para uso. Para saber mais, consulte o tutorial Como usar sinônimos com o Atlas Search.
Preenchimento para contagens
O Atlas Search fornece contagens rápidas de documentos com base em critérios de texto e também suporta pesquisa facetada de números e datas. Para mais informações, consulte How to Use Facets with Atlas Search.
Extrair metadados
O coletor de facet do Atlas Search retorna metadados e não exige que você execute várias consultas para recuperar metadados. Para saber mais, consulte o tutorial How to Use Facets with Atlas Search .
Analisadores personalizados
Atlas Search oferece suporte a analisadores personalizados para atender aos seus requisitos específicos de indexação. Por exemplo, você pode indexar e pesquisar endereços de e-mail e HTTP ou URL HTTPSs utilizando analisadores personalizados. Para mais informações, consulte How to Define a Custom Analyzer and Run an Atlas Search Diacritic-Insensitive Query.
Pesquisando frases ou múltiplas palavras
O operador de Atlas Search oferece suporte à pesquisa de uma sequência de termos.
Pesquisando com expressão regular
O Atlas Search fornece desempenho aprimorado quando você usa o operador de preenchimento automático do Atlas Search.

Dica

Veja também:

O uso de um estágio de pipeline de agregação $match após um estágio $search pode desacelerar drasticamente os resultados da query. Se possível, projete sua consulta $search para que toda a filtragem necessária ocorra no estágio $search para remover a necessidade de um estágio $match .

O operador composto do Atlas Search ajuda com queries que exigem múltiplas operações de filtragem. Se você precisar usar o estágio $match em seu pipeline de agregação, considere usar a opção storedSource para armazenar somente os campos necessários para sua condição $match . Você pode então usar a opção returnStoredSource para recuperar campos armazenados.

Usar um estágio de pipeline de agregação $group após um estágio $search pode desacelerar os resultados da query. Se você usar $group para obter contagens básicas para agregações de campo, recomendamos que você use a faceta dentro do estágio $searchMeta .

Usar um estágio de pipeline de agregação $count após um estágio $search pode desacelerar os resultados da query. Se você usar $count para obter uma contagem do número de documentos, recomendamos que use a contagem dentro do estágio $search ou $searchMeta .

Usar um estágio de pipeline de agregação $sort após um estágio $search pode desacelerar drasticamente os resultados da consulta.

Usar $skip e $limit para recuperar resultados não sequencialmente pode ser lento se os resultados da sua query forem grandes. Para um desempenho ideal, use as opções $search searchAfter ou searchBefore para paginar resultados. Para saber mais, consulte Paginar os resultados.

Para retornar resultados não sequenciais, como pular da página 2 para a página 5, você pode usar os seguintes estágios do pipeline:

  • $search searchAfter o último resultado na página 2

  • $skip documentos nas Páginas 3 e 4

  • $limit resultados para a página 5

Aqui, sua consulta é otimizada para ignorar apenas 2 páginas de resultados, em vez de ignorar 4 páginas se você não tiver usado searchAfter. Para uma demonstração disso, consulte Como paginar os resultados da query.

Você pode monitorar o cluster do Atlas e exibir Atlas Charts com estatísticas de desempenho na aba Atlas Metrics . Essas métricas podem ajudá-lo a ver como a query de pesquisa do Atlas Search e a construção de índices afetam o desempenho do seu cluster. Para saber mais, consulte Revisar métricas do Atlas Search.

O Atlas pode acionar alguns alertas do Atlas quando:

  • O Atlas Search executa query de seus clusters, o que pode afetar as métricas de desempenho do Atlas, como as métricas de direcionamento de query .

    Observação

    Os cursores de fluxos de alterações que o processo do Atlas Search (mongot) usa para manter os índices do Atlas Search atualizados podem contribuir para a taxa de direcionamento de queries e acionar alertas de direcionamento de queries se a taxa for alta.

  • O Atlas Search replica dados do MongoDB, que contribuem para as métricas medidas no Atlas, como o número de operações do getmore .

Observação

Se os recursos do seu cluster estiverem sobrecarregados ou perto dos limites de desempenho aceitável, considere a possibilidade de atualizar para uma camada de cluster maior antes de implementar a funcionalidade Atlas Search.

Acompanhe este vídeo para saber como entender, iterar e melhorar seus resultados do Atlas Search usando detalhes de explicação e pontuação $pesquisar.

Duração: 5 minutos

Voltar

Índices

Próximo

Limitações de nível compartilhado