Explore o novo chatbot do Developer Center! O MongoDB AI chatbot pode ser acessado na parte superior da sua navegação para responder a todas as suas perguntas sobre o MongoDB .

Junte-se a nós no Amazon Web Services re:Invent 2024! Saiba como usar o MongoDB para casos de uso de AI .
Desenvolvedor do MongoDB
Central de desenvolvedor do MongoDBchevron-right
Produtoschevron-right
Atlaschevron-right

Introdução ao MongoDB Atlas Search e Java

Aasawari Sahasrabuddhe7 min read • Published Jul 30, 2024 • Updated Jul 30, 2024
SpringAtlasJava
APLICATIVO COMPLETO
Ícone do FacebookÍcone do Twitterícone do linkedin
Avalie esse Tutorial
star-empty
star-empty
star-empty
star-empty
star-empty
O Atlas Search MongoDB é uma pesquisa de texto completo incorporada disponível no MongoDB Atlas, que fornece uma experiência perfeitamente escalável para criar funcionalidades de aplicativos baseados em relevância. Construído no Apache Lucene, o recurso Atlas Search oferece suporte a um amplo escopo de funcionalidades de pesquisa sem a necessidade de aplicativos adicionais para lidar com os recursos de pesquisa.
Nesta série de tutoriais, afundaremos os conceitos do Atlas Search em detalhes e construiremos um aplicativo de amostra usando o Spring Boot. Esses artigos o guiarão pelo processo de criação de índices de pesquisa e implementação de funcionalidades de pesquisa em documentos usando recursos avançados, como pesquisas difusas, preenchimento automático e muito mais.
Na primeira parte desta série, abordaremos como criar índices de pesquisa utilizando vários métodos:
  1. Interface do usuário do Atlas: Uma interface amigável para gerenciar índices de pesquisa
  2. Atlas CLI: Interface de linha de comando para um controle mais direto
  3. Aplicativo Spring Boot: gerenciando índices programaticamente em seu aplicativo
Ao final deste tutorial, você terá uma sólida compreensão de como aproveitar o MongoDB’s Atlas Search para aprimorar os recursos de pesquisa do seu aplicativo.
Vamos começar!

Pré-requisitos

Abaixo estão os pré-requisitos necessários para começar.
  1. Um0 cluster M — você pode criar um registrando-se para uma conta Atlas gratuita
  2. Java versão 17+
Observação: a camada grátis ou M0 permite que apenas três índices do Atlas Search sejam criados de uma só vez. Para criar mais de três de cada vez, você deve atualizar para M2/M5 ou superior. Além disso, se você deseja criar um índice usando CLI e drivers, certifique-se de atualizar o cluster para M10 ou superior.

O que são índices do Atlas Search?

Índices de banco de dados tradicionais, como árvores B ou índices de hash no MongoDB, melhoram o desempenho da consulta ao permitir que o banco de dados localize dados rapidamente sem digitalizar todos os documentos. Eles geralmente são usados para consultas de correspondência exata, consultas de intervalo e operações de classificação.
Por outro lado, os índices doAtlas Search são projetados para Atlas Search de texto completo, suportando query de texto avançadas, pontuação de relevância e análise de texto. É uma estrutura de dados especializada que organiza os dados para torná-los facilmente pesquisáveis. Ele mapeia os termos para os documentos que contêm esses termos, permitindo a recuperação mais rápida de documentos com base em identificadores específicos. Para fazer query de dados em seu Atlas cluster usando o Atlas Search, você precisa configurar um índice do Atlas Search .
Os índices de pesquisa podem ser criados em um único campo ou em vários campos de documentos. Os índices nesses campos podem ser criados com diferentes mecanismos que discutiremos.
Saiba mais sobre analisadores, tokenizadores e campo mapeamentos.

criando índices do atlas search

Caso 1: Criando um índice com mapeamento dinâmico definido como verdadeiro

Using Atlas UI

Faça login no cluster Atlas e vá para a seção “Atlas Search” na tela.
Clique em “Create Search Index.”
Captura de tela representando a UI do Atlas para criar os índices do Atlas Search
Captura de tela representando a UI do Atlas para criar os índices do Atlas Search
Clique em “Next” e selecione o nome do índice e a coleção na qual deseja criar o índice de pesquisa.
A construção do índice começará e, após alguns minutos, você verá a tela abaixo:
A captura de tela representando que o índice foi criado
A captura de tela representando que o índice foi criado

Usando o Atlas CLI

Para criar e gerenciar índices do Atlas Search usando o Atlas CLI, seu cluster do Atlas deve executar o MongoDB 6.0+ ou 7.0+.
Você não pode usar o comandomongosh para criar e gerenciar índices do Atlas Search em clusters M0, M2 ou M5 Atlas. Você terá que atualizar para M10+ para usar este método. O índice será criado usando o comando abaixo:
1atlas clusters search indexes create --clusterName <clusterName> --file index.json
O arquivo index.json deve conter as seguintes informações:
1{
2 "name": "testIndex01",
3 "database": "sample_mflix",
4 "collectionName": "movies",
5 "mappings": {
6 "dynamic": true
7 }
8}
Isso lhe dará o seguinte resultado:
Index testIndex01 created.

Usando o aplicativo Spring Boot

Para criar um índice usando o aplicativo Spring Boot, você terá que usar o exemplo de código abaixo:
1try (MongoClient mongoClient = MongoClients.create(uri)) {
2MongoDatabase database = mongoClient.getDatabase("sample_mflix");
3MongoCollection<Document> collection = database.getCollection("movies");
4SearchIndexModel indexOne = new SearchIndexModel("indexOne",
5 new Document("mappings",
6 new Document("dynamic", true)));
7collection.createSearchIndexes(Collections.singletonList(indexOne));

Caso 2: Criando um índice com mapeamento de campo

Using Atlas UI

Conforme mencionado na primeira etapa para criar o índice, selecione o Editor Visual e selecione o nome do banco de dados e da collection como sample_mflix e filmes respectivamente.
Após selecioná-lo, clique em "Next " e, em seguida, na aba "Refine Your Index ". Clique em "Add Field Mapping " e você verá a tela abaixo aparecendo:
Captura de tela representando a UI do Atlas para adicionar mapeamento de campo
Captura de tela representando a UI do Atlas para adicionar mapeamento de campo
Selecione o nome do campo e o tipo de dados com os quais você gostaria de reconhecer o nome do campo. Por exemplo, a captura de tela abaixo representa o mapeamento de campo adicionado aos campos de gêneros eanos .
Captura de tela representando o mapeamento de campo criado
Captura de tela representando o mapeamento de campo criado
Clique em "Save Changes " e a criação do índice será iniciada.

Usando o Atlas CLI

Atualize o arquivo index.json como:
1{
2 "name": "testIndex02",
3 "database": "sample_mflix",
4 "collectionName": "movies",
5 "mappings": {
6 "dynamic": true,
7 "fields": {
8 "genre": [
9 {
10 "type": "string"
11 },
12 {
13 "type": "stringFacet"
14 }
15 ],
16 "year": [
17 {
18 "type": "numberFacet"
19 },
20 {
21 "type": "number"
22 }
23 ]
24 }
25 }
26}
Agora, para criar o índice, use o mesmo comando mencionado no Caso 1 acima.

Usando o aplicativo Spring Boot

Se você deseja criar o índice acima usando o aplicativo Spring Boot, você pode tentar usar o código abaixo:
1try (MongoClient mongoClient = MongoClients.create(uri)) {
2MongoDatabase database = mongoClient.getDatabase("sample_mflix");
3MongoCollection<Document> collection = database.getCollection("movies");
4SearchIndexModel indexTwo = new SearchIndexModel("testIndex02",
5 new Document("mappings",
6 new Document("dynamic", true).append("fields", new Document().append("genres", Arrays.asList(
7 new Document().append("type", "stringFacet"),
8 new Document().append("type", "string")))
9.append("year",Arrays.asList(
10 new Document().append("type", "numberFacet"),
11 new Document().append("type", "number"))))));
12collection.createSearchIndexes(Collections.singletonList(indexTwo));
13}

Caso 3: Criando um índice para testar a capacidade de preenchimento automático

O recurso de preenchimento automático do Atlas Search permite que você envie palavras e frases incompletas. Os campos que você pretende consultar com o operador autocomplete devem ser indexados com o tipo de dados autocomplete na definição de índice da collection. Para saber mais sobre o recurso, você pode seguir a documentação do preenchimento automático no Atlas Search.

Using Atlas UI

Depois de seguir as mesmas etapas para criar o mapeamento de campo com o tipo de dados como autocomplete para fullplot, especifique os detalhes conforme abaixo e crie o índice.
Captura de tela representando a interface do usuário do Atlas para criar mapeamento de campo e tokenização de preenchimento automático
Captura de tela representando a interface do usuário do Atlas para criar mapeamento de campo e tokenização de preenchimento automático

Usando o Atlas CLI

Para criar o mesmo índice com Atlas CLI, atualize o arquivo index.json como:
1{
2 "name": "testIndex03",
3 "database": "sample_mflix",
4 "collectionName": "movies",
5 "mappings": {
6 "dynamic": true,
7 "fields": {
8 "fullplot": {
9 "foldDiacritics": false,
10 "maxGrams": 7,
11 "minGrams": 3,
12 "tokenization": "nGram",
13 "type": "autocomplete"
14 }
15 }
16 }
17}
Conforme mencionado na captura de tela acima, para definir a tokenização depreenchimento automático para o Atlas Search, você precisará ver determinados parâmetros para criar os tokens.
Por exemplo, no JSON acima, o foldDiacritics definido como false retorna apenas resultados que correspondem às cadeias de caracteres com ou sem diacríticos na consulta. Por exemplo, uma pesquisa por cafè retorna resultados somente com os caracteres da palavra cafè.
Os maxGrams e minGrams são atributos para tokenizadoresnGram que determinam o número de caracteres a serem incluídos nos tokens mais longos e mais curtos criados respectivamente.
Use o mesmo comando acima para criar o índice.

Usando o aplicativo Spring Boot

Use o trecho de código abaixo para criar o mesmo índice programaticamente no Spring.
1try (MongoClient mongoClient = MongoClients.create(uri)) {
2MongoDatabase database = mongoClient.getDatabase("sample_mflix");
3MongoCollection<Document> collection = database.getCollection("movies");
4SearchIndexModel indexThree = new SearchIndexModel("testIndex03",
5 new Document("mappings",
6 new Document("dynamic",false).append("fields",
7 new Document().append("fullplot",
8Arrays.asList(new Document().append("type", "stringFacet"),
9 new Document().append("type", "string"),
10 new Document().append("type", "autocomplete")
11 .append("tokenization", "nGram")
12 .append("minGrams", 3)
13 .append("maxGrams", 7)
14 .append("foldDiacritics", false)))
15 .append("title", new Document().append("type", "string")))));
16collection.createSearchIndexes(Collections.singletonList(indexThree));
17}

Caso 4: Criando um índice de pesquisa para usar analisadores

O Atlas Search permite criar analisadores para controlar como ele transforma o conteúdo de um campo de string em termos pesquisáveis.
Os métodos abaixo ajudarão você a entender como criar índices para usar esses analisadores.

Using Atlas UI

Siga as mesmas etapas que você seguiu nos casos acima. A captura de tela abaixo ajudará você a entender como adicionar analisadores usando a UI.
Captura de tela representando a interface do usuário do Atlas para criar um analisador
Captura de tela representando a interface do usuário do Atlas para criar um analisador
Uma vez feito isso, crie o índice.

Usando o Atlas CLI

Atualize o index.json conforme abaixo:
1{
2 "name": "testIndex04",
3 "database": "sample_mflix",
4 "collectionName": "movies",
5 "analyzer": "lucene.english",
6 "searchAnalyzer": "lucene.english",
7 "mappings": {
8 "dynamic": true,
9 "fields": {
10 "fullplot": {
11 "type": "string"
12 }
13 }
14 },
15 "synonyms": [
16 {
17 "analyzer": "lucene.english",
18 "name": "synonymName",
19 "source": {
20 "collection": "test_synonyms"
21 }
22 }
23 ]
24}
E depois, use o mesmo comando para criar o índice.
1atlas clusters search indexes create --clusterName <clusterName> --file index.json

Usando o aplicativo Spring Boot

Para criar o índice acima, use o código abaixo em seu aplicativo Spring.
1try (MongoClient mongoClient = MongoClients.create(uri)) {
2MongoDatabase database = mongoClient.getDatabase("sample_mflix");
3MongoCollection<Document> collection = database.getCollection("movies");
4SearchIndexModel indexFlour = new SearchIndexModel("testIndex04",
5 new Document("mappings", new Document()
6 .append("dynamic", true)
7 .append("fields", new Document()
8 .append("fullplot", new Document()
9 .append("analyzer", "lucene.english")
10 .append("type", "string"))))
11 .append("synonyms", List.of(new Document()
12 .append("analyzer", "lucene.english")
13 .append("name", "synonymName")
14 .append("source", new Document()
15 .append("collection", "test_synonyms")))));
16collection.createSearchIndexes(Collections.singletonList(indexThree));
17}
O código para criar todos os índices programaticamente está disponível no repositório GitHub.

Excluindo os índices do Atlas Search

Depois que os índices forem criados e você desejar soltá-los, certifique-se de soltá-los usando um dos seguintes métodos:
Usando a UI: Clique no índice na UI e selecione "Delete Index " na lista.
Usando Atlas CLI: Siga as etapas abaixo para criar todos os índices e IDs de índice e use o comando para excluir o índice.
1atlas clusters search indexes list --clusterName <clusterName> --db sample_mflix --collection movies
2atlas clusters search indexes delete <index ID> --clusterName <clusterName>
Usando o aplicativo Spring Boot: Use o comando abaixo para excluir todos os índices criados.
1collection.dropSearchIndex("<indexName>");

Conclusão

A criação de índices do Atlas Search usando a UI do Atlas , CLI e aplicativo Spring Boot fornece uma compreensão abrangente de como aproveitar os poderosos recursos do Atlas Search do MongoDB. A UI do Atlas oferece uma abordagem intuitiva e visual, perfeita para quem prefere uma interface gráfica. A CLI oferece mais recursos de controle e script, tornando-a ideal para automação e integração nos fluxos de trabalho de desenvolvimento. A integração da criação de índice do Atlas Search em um aplicativo Spring Boot mostra a integração perfeita do MongoDB Atlas com aplicativos baseados em Java, permitindo que os desenvolvedores criem funcionalidades robustas e escaláveis do Atlas Search.
Ao dominar esses métodos, você pode aprimorar seus aplicativos com recursos avançados de pesquisa, garantindo uma melhor experiência do usuário e um melhor desempenho na recuperação de dados. Seja você um desenvolvedor iniciante ou experiente, a combinação de UI, CLI e abordagens programáticas fornece um kit de ferramentas flexível e abrangente para gerenciar índices de pesquisa no MongoDB Atlas.
Se você tiver alguma dúvida ou precisar de mais assistência, entre em contato com os MongoDB Community e consulte a documentação oficial e os tutoriais daMongoDB University para obter informações e orientações mais detalhadas.
Feliz busca!
Principais comentários nos fóruns
Ainda não há comentários sobre este artigo.
Iniciar a conversa

Ícone do FacebookÍcone do Twitterícone do linkedin
Avalie esse Tutorial
star-empty
star-empty
star-empty
star-empty
star-empty
{Parte de uma série
Atlas Search com inicialização de primavera
Próximo
Continuar

Mais nesta série
Relacionado
Tutorial

Criar um backend de gerenciamento de mídia escalável: integrando Node.js, Armazenamento de blobs Azure e MongoDB


Nov 05, 2024 | 10 min read
Tutorial

Como escolher o melhor modelo de incorporação para seu aplicativo LLM


Nov 07, 2024 | 16 min read
Tutorial

MongoDB Atlas com Terraform - Políticas de cluster e backup


Sep 11, 2024 | 22 min read
Tutorial

Como enviar alterações de documentos do MongoDB para um canal do Slack


Oct 26, 2023 | 6 min read
Sumário