Menu Docs

Gerenciar índices do Atlas Search

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.

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ção, o que permite atualizar as cópias armazenadas dos dados, e os índices do Atlas Search são eventualmente consistentes.

Quando você altera uma definição de índice, o mongot reconstrói automaticamente o novo índice em segundo plano, enquanto continua servindo consultas com o índice antigo para garantir que não haja tempo de inatividade. Isso acontece quando você distribui os processos mongot e mongod no mesmo nó e quando distribui os processos em nós diferentes. O Atlas também reconstrói índices quando você habilita ou desabilita a Encryption at Rest.

Se você alterar a topologia de sua implantação de pesquisa, o Atlas Search provisiona e cria índices em todos os novos nós antes de remover os nós antigos, para garantir que não haja tempo de inatividade da consulta.

Para implementações em que os processos mongod e mongot são executados no mesmo nó, se o Atlas Search introduzir alterações que exijam a reconstrução de seus índices (como alguns recursos do Atlas Search que exigem uma atualização de índice), o Atlas implementa automaticamente nós gratuitamente para criar os índices, enquanto os nós antigos continuam atendendo suas queries.

Aviso

Se você fragmentar uma collection que já tenha um índice do Atlas Search, poderá passar por um breve período de inatividade de query quando a coleção começar a aparecer em um fragmento. Além disso, se você adicionar um fragmento a uma coleção já fragmentada que contenha um índice do Atlas Search, suas pesquisas nessa coleção falharão até que o processo de initial sync seja concluído nos fragmentos adicionados. Para saber mais, consulte processo de sincronização inicial.

Importante

Se você utilizar o estágio de agregação $out para modificar uma collection com um índice de Atlas Search existente, deverá excluir e recriar o índice de pesquisa. Se possível, considere utilizar $merge ao invés de $out.

Você pode implantar nós de pesquisa dedicados para melhorar o desempenho, a escalabilidade e o isolamento de recursos. Se você implantou nós de pesquisa, considere o seguinte:

  • Adicionar e ajustar fragmentos aciona uma reconstrução do índice de Atlas Search. Durante a reconstrução do índice, o índice talvez não terrá os dados mais atuais. Portanto, queries em relação aos dados nesses fragmentos 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 excluir e criar novos índices do Atlas Search assim que a operação for concluída.

  • Se você emitir o comando para alterar o fragmento primário de um banco de dados, os índices do Atlas Search para qualquer coleção não fragmentada nesse banco de dados ficarão indisponíveis após a conclusão da operação. Você deve excluir e criar novos índices do Atlas Search assim que a operação movePrimary for concluída.

Para saber mais sobre a arquitetura do nó do Atlas Search, consulte Opções de sistema do Atlas Search.

É possível atribuir roles de usuário do projeto ou roles de usuário do banco de dados para fornecer acesso aos privilégios de usuário necessários para executar as ações de índice do Atlas Search descritas neste guia.

A tabela abaixo mostra os modos de acesso que as seguintes Roles do Projeto suportam para as ações do Atlas Search especificadas:

Função
Ação do Atlas Search
IU do Atlas
Atlas CLI
Atlas API [1]

Para visualizar índices e analisadores do Atlas Search .

Para criar, visualizar, atualizar e excluir índices e analisadores do Atlas Search .

Para criar, visualizar, atualizar e excluir índices do Atlas Search.

[1] Cada função concede permissão para chamar um subconjunto ou o conjunto completo de pontos de extremidade da API Atlas Search na API de Administração do Atlas. Consulte a coluna Ação do Atlas Search para a descrição dos pontos de extremidade da API aos quais cada função concede acesso.

As seguintes roles do Banco de Dados MongoDB suportam as Ações de Privilégio do Índice de Atlas Searchfornecidas:

Descrição da Ação
Roles do banco de dados
Ação de privilégio do índice do Atlas Search

Ver índice do Atlas Search

Criar índice do Atlas Search

Editar índice do Atlas Search

Excluir índice do Atlas Search

Para saber mais, consulte Funções embutidas ou Privilégios específicos.

O tutorial a seguir descreve como criar um índice do Atlas Search usando o método selecionado.

Para ver um tutorial de exemplo que cria um índice para a coleção sample_mflix.movies, consulte Início Rápido do Atlas Search. Para obter uma visão geral conceitual de como definir um índice para atender às suas preferências de query, consulte Definir seu índice.

Você pode utilizar também o Atlas Search com implantações locais do Atlas que você cria com o Atlas CLI. Para saber mais, consulte Como criar uma implantação local do Atlas.


➤ Use o menu suspenso Selecione seu idioma para definir o idioma do procedimento nesta seção.


Para criar um índice do Atlas Search usando a API do Atlas Search :

1

Envie uma solicitação POST para o endpointsearch/indexes.

curl --user "{PUBLIC-KEY}:{PRIVATE-KEY}" --digest \
--header "Accept: application/json" \
--header "Content-Type: application/json" \
--include \
--request POST "https://cloud.mongodb.com/api/atlas/v2/groups/{groupId}/clusters/{clusterName}/search/indexes" \
--data '
{
"collectionName": "<collection-name>",
"database": "<database-name>",
"name": "<index-name>",
"type": "search",
"definition":
{
"analyzer": "<analyzer-name>",
"searchAnalyzer": "<analyzer-name>",
"mappings": {
"dynamic": <boolean>,
"fields": { <field-definition> }
},
"numPartitions": <integer>,
"analyzers": [ {
<custom-analyzer-definition>
}
],
"storedSource": <boolean> | {
<stored-source-definition>
},
"synonyms": [
{
<synonym-mapping-definition>
}
]
}
}'

Para saber mais sobre a sintaxe e os parâmetros deste ponto de extremidade, consulte Criar um.

2

Observação

O Atlas não cria o índice se a collection não existir, mas ainda assim retorna um status 200.

Para criar um índice de Atlas Search utilizando o Atlas CLI:

Para criar um índice de pesquisa para um agrupamento utilizando o Atlas CLI, execute o seguinte comando:

atlas clusters search indexes create [indexName] [options]

Para saber mais sobre a sintaxe e os parâmetros do comando, consulte a documentação do Atlas CLI para criação de índices de pesquisa dos clusters do Atlas.

Para criar um índice de pesquisa para o sistema especificado utilizando o Atlas CLI, execute o seguinte comando:

atlas deployments search indexes create [indexName] [options]

Para saber mais sobre a sintaxe e os parâmetros do comando, consulte a documentação da CLI do Atlas para implantações do Atlas que os índices de pesquisa criam.

Para saber mais sobre como usar a Atlas CLI para criar um sistema local do Atlas, consulte Criar um sistema local do Atlas.

Dica

Veja: links relacionados

O exemplo a seguir mostra como usar o comando atlas clusters ou atlas deployments para criar um índice do Atlas Search no modo não interativo com um arquivo de configuração.

1
{
"collectionName": "movies",
"database": "sample_mflix",
"definition": {
"mappings": {
"dynamic": true
},
},
"name": "searchIndex"
}
2
  1. Execute um dos seguintes comandos.

    Implantação da nuvem:

    atlas clusters search indexes create --file indexDef.json

    Implantação local:

    atlas deployments search indexes create --file indexDef.json
  2. Especifique a implantação e pressione Enter.

Para criar um índice do Atlas Search usando a interface do usuário do Atlas :

1

Aviso

Melhorias na navegação em andamento

No momento, estamos lançando uma experiência de navegação nova e aprimorada. Se as etapas a seguir não corresponderem à sua visualização na UI do Atlas, consulte a documentação de visualização.

  1. Se ainda não tiver sido exibido, selecione a organização que contém seu projeto no menu Organizations na barra de navegação.

  2. Se ainda não estiver exibido, selecione o projeto desejado no menu Projects na barra de navegação.

  3. Se ainda não estiver exibido, clique em Clusters na barra lateral.

    A página Clusters é exibida.

2

Você pode acessar a página do Atlas Search pela barra lateral, pelo Data Explorer ou pela página de detalhes do cluster.

  1. Na barra lateral, clique em Atlas Search sob o título Services.

    Se você não tiver clusters, clique em Create cluster para criar um. Para saber mais, consulte Criar um cluster.

  2. Se o seu projeto tiver múltiplos clusters, selecione o cluster que deseja utilizar a partir do menu suspenso Select cluster e clique em Go to Atlas Search.

    A página Atlas Search é exibida.

  1. Clique no botão Browse Collections para o seu cluster.

  2. Expanda o banco de dados e selecione a coleção.

  3. Clique na guia Search Indexes da coleção.

    A página Atlas Search é exibida.

  1. Clique no nome do seu cluster.

  2. Clique na aba Atlas Search.

    A página Atlas Search é exibida.

3
4

Faça as seguintes seleções na página e clique em Next.

Search Type

Selecione o tipo de índice do Atlas Search .

Index Name and Data Source

Especifique as seguintes informações:

  • Index Name: default

  • Database and Collection:

    • nome do banco de dados

    • nome da coleção

Configuration Method

For a guided experience, select Visual Editor.

To edit the raw index definition, select JSON Editor.

Observação

Seu índice do Atlas Search tem o nome default por padrão. Se você manter esse nome, seu índice será o índice de pesquisa padrão para qualquer query do Atlas Search que não especifique uma index opção diferente em seus operadores. Se você estiver criando vários índices, recomendamos que mantenha uma convenção de nomenclatura descritiva consistente em seus índices.

5

A definição de índice padrão é um mapeamento dinâmico dos campos nos documentos e funcionará com qualquer coleção.

Para personalizar sua definição de índice, revise as seguintes configurações de índice:

Campo do Editor Visual
Descrição
necessidade

Index Analyzer

Especifique o analisador a ser usado para indexar os dados da coleção Por padrão, o Atlas Search utiliza o analisador padrão (lucene.standard).

Corresponde à configuração JSON do analyzer.

Opcional

Search Analyzer

Especifica o analisador a ser aplicado ao texto de consulta antes de pesquisar o texto. Se você omitir este campo, o índice herda um analisador por padrão na seguinte ordem:

  1. A opção analyzer para este campo, se especificado.

  2. A opção searchAnalyzer para o índice se especificado.

  3. A opção analyzer para o índice se especificado.

  4. O analisador lucene.standard.

Corresponde à configuração JSON do searchAnalyzer.

Opcional

Dynamic Mapping

Especifique o mapeamento dinâmico ou estático dos campos.

Por padrão, o mapeamento dinâmico está habilitado. Para desativar o mapeamento dinâmico, defina dynamic como Off. Se você desabilitar o mapeamento dinâmico, deverá especificar os campos para indexar.

Para saber mais sobre mapeamentos dinâmicos e estáticos, consulte Definir mapeamentos de campo.

Corresponde à configuração JSON do mappings.dynamic.

Obrigatório

Nome do campo
Descrição
necessidade

analyzer

Especifique o analisador a ser usado para indexar os dados da coleção Por padrão, o Atlas Search utiliza o analisador padrão (lucene.standard).

Opcional

searchAnalyzer

Especifica o analisador a ser aplicado ao texto de consulta antes de pesquisar o texto. Se você omitir este campo, o índice herda um analisador por padrão na seguinte ordem:

  1. A opção analyzer para este campo, se especificado.

  2. A opção searchAnalyzer para o índice se especificado.

  3. A opção analyzer para o índice se especificado.

  4. O analisador lucene.standard.

Opcional

mappings.dynamic

Especifique o mapeamento dinâmico ou estático dos campos. Para desativar o mapeamento dinâmico, defina "dynamic": como false. Por padrão, o mapeamento dinâmico está habilitado. Se você desabilitar o mapeamento dinâmico, deverá especificar os campos para indexar. Para saber mais sobre mapeamentos dinâmicos e estáticos, consulte Referência de índice.

Obrigatório

Para saber mais sobre essas configurações de definição de índice, consulte Referência de índice.

Se você estiver satisfeito com a configuração padrão, pule esta etapa. Se você deseja refinar o índice do Atlas Search, vá para a próxima etapa.

6
  1. Clique em Refine Your Index para fazer alterações em qualquer uma das seguintes configurações.

    Nome do campo
    Descrição
    necessidade

    Field Mappings

    Obrigatório se Dynamic Mapping na seção Index Configurations estiver desabilitado.

    Especifique os campos no índice:

    1. Clique em Add Field Mapping para abrir a janela Add Field Mapping.

    2. Especifique as seguintes informações sobre o campo:

      • Field name - Nome do campo a ser indexado.

      • Data Type - Tipo de dados do campo. Para saber mais sobre os tipos de dados aceitos e suas opções, consulte Tipos de dados.

    3. (Opcional) Especifique propriedades adicionais.

      Uma tabela de opções de configuração adicionais aparece na janela Add Field Mapping. Estas propriedades dependem do tipo de dados que você selecionou na última etapa.

      Para saber mais sobre os tipos de dados aceitos e suas opções, consulte Tipos de dados.

    4. (Opcional) Adicione vários campo.

      Clique em Add Multi Field para configurar um analisador de campo alternativo com o qual indexar o campo. Para saber mais, consulte Multianalisador.

    5. Clique em Add para adicionar o campo.

      Você pode clicar no ícone de reticências (...) do campo , na coluna Actions, para fazer o seguinte:

      • Clique em Edit para modificar a configuração.

      • Clique em Add Data Type para configurar tipos de dados adicionais para o campo.

      • Clique em Delete para remover o campo do índice.

    Para saber mais sobre como definir mapeamentos de campo, consulte Referência de índice.

    Corresponde à configuração JSON do mappings.fields.

    Condicional

    Stored Source Fields

    Especifique os campos para armazenar no Atlas Search para pesquisas de tempo de query. Você pode armazenar campos de todos os tipos de dados suportados na Atlas Search.

    Para saber mais sobre como armazenar campos, consulte Definir campos de origem armazenados em seu índice do Atlas Search.

    Corresponde à configuração JSON do storedSource.

    Opcional

    Synonyms Mappings

    Especifique mapeamentos de sinônimos para usar em seu índice.

    Você pode utilizar um mapeamento de sinônimo para fazer uma query somente em campos analisados com o mesmo analisador.

    Para saber mais sobre mapeamentos de sinônimos, consulte Definir mapeamentos de sinônimos no índice do Atlas Search.

    Corresponde à configuração JSON do synonyms.

    Opcional.

    Index Partitions

    O número de partições a serem usadas se os objetos de campo excederem 2.1 bilhões.

    Corresponde à configuração JSON do numPartitions.

    Opcional.

  2. Clique em Save Changes.

  1. Adicione qualquer uma das seguintes configurações ao seu índice:

    Nome do campo
    Descrição
    necessidade

    mappings.fields

    Obrigatório se mappings.dynamic for false.

    Especifique os campos que você deseja indexar. Para saber mais, consulte Definir mapeamentos de campo.

    Condicional

    storedSource

    Especifique os campos para armazenar no Atlas Search para pesquisas de tempo de query. Você pode armazenar campos de todos os tipos de dados suportados na Atlas Search.

    Para saber mais sobre como armazenar campos, consulte Definir campos de origem armazenados em seu índice do Atlas Search.

    Opcional

    synonyms

    Especifique mapeamentos de sinônimos para usar em seu índice.

    Você pode utilizar um mapeamento de sinônimo para fazer uma query somente em campos analisados com o mesmo analisador.

    Para saber mais sobre mapeamentos de sinônimos, consulte Definir mapeamentos de sinônimos no índice do Atlas Search.

    Opcional

    numPartitions

    O número de partições a serem usadas se os objetos de campo excederem 2.1 bilhões.

    Opcional.

    Para saber mais sobre essas configurações de definição de índice, consulte Referência de índice.

  2. Clique em Next.

7

Observação

Não é possível salvar a definição de índice padrão como rascunho. Se você utilizar o Visual Editor e sua definição de índice contiver mapeamentos estáticos, você poderá salvar uma definição de índice como um rascunho.

  1. Clique em Cancel.

  2. Clique em Save Draft ou Delete Draft.

    Importante

    Você não pode criar um novo índice quando tiver um rascunho de índice pendente.

    Para saber mais, consulte Retomar ou excluir um rascunho de índice do Atlas Search.

8

O Atlas exibe um aviso breve e não interativo para informar que seu índice está sendo construído.

9

O índice recém-criado aparece na aba Atlas Search. Enquanto o índice está construindo, o campo StatusBuild in Progress. Quando o índice terminar de construir, o campo StatusActive.

Observação

Collections maiores demoram mais tempo para indexar. Você receberá uma notificação por e-mail quando seu índice terminar a criação.

Para criar um índice do Atlas Search usando mongosh:

1

Para saber mais, consulte Conectar via mongosh.

2

Use o método db.collection.createSearchIndex() .

O comando tem a seguinte sintaxe. Se você omitir o nome do índice, o Atlas Search nomeará o índice default. Para saber mais, consulte Referência de índice.

db.<collection>.createSearchIndex(
"<index-name>",
{
/* search index definition */
}
)

Exemplo

Para criar um índice denominado example-index que indexe dinamicamente os campos na coleção movies, execute o seguinte comando:

db.movies.createSearchIndex(
"example-index",
{ mappings: { dynamic: true } }
)
example-index

Para criar um índice do Atlas Search usando o MongoDB Compass:

1

Abra o Compass e conecte-se ao Atlas cluster. Para obter instruções detalhadas, consulte Conectar via Compass.

2

Na tela Database, clique no nome do banco de dados e, em seguida, clique no nome da coleção.

3
  1. Clique na aba Indexes e selecione Search Indexes.

  2. Clique em Create Index para abrir a caixa de diálogo de criação de índice.

  3. Especifique um nome para o índice.

    Seu índice do Atlas Search tem o nome default por padrão. Se você manter esse nome, seu índice será o índice de pesquisa padrão para qualquer query do Atlas Search que não especifique uma index opção diferente em seus operadores. Se você estiver criando vários índices, recomendamos que mantenha uma convenção de nomenclatura descritiva consistente em seus índices.

  4. Especifique a definição de índice do JSON Atlas Search.

    1{
    2 "analyzer": "<analyzer-for-index>",
    3 "searchAnalyzer": "<analyzer-for-query>",
    4 "mappings": {
    5 "dynamic": <boolean>,
    6 "fields": { <field-definition> }
    7 },
    8 "numPartitions": <integer>,
    9 "analyzers": [ <custom-analyzer> ],
    10 "storedSource": <boolean> | {
    11 <stored-source-definition>
    12 },
    13 "synonyms": [
    14 {
    15 <synonym-mapping-definition>
    16 }
    17 ]
    18}
    19
  5. Clique em Create Search Index.

Para usar o driver C para criar um índice do Atlas Search, defina o índice de pesquisa em seu aplicativo e chame o método mongoc_collection_command_simple().

Observação

Os métodos de gerenciamento do Atlas Search Index são executados de forma assíncrona. Os métodos do driver podem ser gerados antes de confirmar que foram executados corretamente. Para determinar o status atual dos índices de pesquisa, execute uma operação de agregação com o estágio de pipeline $listSearchIndexes .

1
2

O seguinte aplicação de amostra especifica o comando createSearchIndexes para definir um índice de pesquisa. Em seguida, o aplicação converte as informações de comando e índice de pesquisa em BSON e passa essas informações para o método mongoc_collection_command_simple() para criar o índice de pesquisa. Para saber mais, consulte Referência de índice.

#include <mongoc/mongoc.h>
#include <stdlib.h>
int main (void)
{
mongoc_client_t *client = NULL;
mongoc_collection_t *collection = NULL;
mongoc_database_t *database = NULL;
bson_error_t error;
bson_t cmd = BSON_INITIALIZER;
bool ok = true;
mongoc_init();
// Connect to your Atlas deployment
client = mongoc_client_new("<connectionString>");
if (!client) {
fprintf(stderr, "Failed to create a MongoDB client.\n");
ok = false;
goto cleanup;
}
// Access your database and collection
database = mongoc_client_get_database(client, "<databaseName>");
collection = mongoc_database_get_collection(database, "<collectionName>");
// Specify the command and the new index
const char *cmd_str = BSON_STR({
"createSearchIndexes" : "<collectionName>",
"indexes" : [ {
"name" : "<indexName>",
"definition" : {
"analyzer": "<indexAnalyzer>",
"searchAnalyzer": "<queryAnalyzer>",
"mappings": {
"dynamic": <boolean>,
"fields": { <fieldDefinition> }
},
"numPartitions": <integer>,
"analyzers": [ <customAnalyzer> ],
"storedSource": <boolean> | {
<storedSourceDefinition>
},
"synonyms": [
{
<synonymMappingDefinition>
}
]
}
} ]
});
// Convert your command to BSON
if (!bson_init_from_json(&cmd, cmd_str, -1, &error)) {
fprintf(stderr, "Failed to parse command: %s\n", error.message);
ok = false;
goto cleanup;
}
// Create the Atlas search index by running the command
if (!mongoc_collection_command_simple (collection, &cmd, NULL, NULL, &error)) {
fprintf(stderr, "Failed to run createSearchIndexes: %s\n", error.message);
ok = false;
goto cleanup;
}
printf ("Index created!\n");
cleanup:
mongoc_collection_destroy (collection);
mongoc_client_destroy (client);
mongoc_database_destroy (database);
bson_destroy (&cmd);
mongoc_cleanup ();
return ok ? EXIT_SUCCESS : EXIT_FAILURE;
}

O seguinte aplicação de amostra utiliza o comando createSearchIndexes para definir múltiplos índices de pesquisa. Em seguida, o aplicação converte as informações de comando e índice de pesquisa em BSON e passa essas informações para o método mongoc_collection_command_simple() para criar o índice de pesquisa. Para saber mais, consulte Referência de índice.

#include <mongoc/mongoc.h>
#include <stdlib.h>
int main (void)
{
mongoc_client_t *client = NULL;
mongoc_collection_t *collection = NULL;
mongoc_database_t *database = NULL;
bson_error_t error;
bson_t cmd = BSON_INITIALIZER;
bool ok = true;
mongoc_init();
// Connect to your Atlas deployment
client = mongoc_client_new("<connectionString>");
if (!client) {
fprintf(stderr, "Failed to create a MongoDB client.\n");
ok = false;
goto cleanup;
}
// Access your database and collection
database = mongoc_client_get_database(client, "<databaseName>");
collection = mongoc_database_get_collection(database, "<collectionName>");
// Specify the command and the new indexes
const char *cmd_str = BSON_STR({
"createSearchIndexes" : "<collectionName>",
"indexes" : [{
// Add your search index definition fields here
"name" : "<firstIndexName>"
},
{
// Add your search index definition fields here
"name" : "<secondIndexName>"
}]
});
// Convert your command to BSON
if (!bson_init_from_json(&cmd, cmd_str, -1, &error)) {
fprintf(stderr, "Failed to parse command: %s\n", error.message);
ok = false;
goto cleanup;
}
// Create the Atlas search indexes by running the command
if (!mongoc_collection_command_simple (collection, &cmd, NULL, NULL, &error)) {
fprintf(stderr, "Failed to run createSearchIndexes: %s\n", error.message);
ok = false;
goto cleanup;
}
printf ("Indexes created!\n");
cleanup:
mongoc_collection_destroy (collection);
mongoc_client_destroy (client);
mongoc_database_destroy (database);
bson_destroy (&cmd);
mongoc_cleanup ();
return ok ? EXIT_SUCCESS : EXIT_FAILURE;
}
3
  • Sua connection string do Atlas. Para saber mais, consulte Conectar via Drivers.

  • O banco de dados e a collection para a qual você deseja criar o índice.

  • O nome do seu índice. Se você omitir o nome do índice, o Atlas Search nomeará o índice default.

  • A definição do índice de pesquisa. Para saber mais, consulte Referência de índice.

4
gcc -o create-index create-index.c $(pkg-config --libs --cflags libmongoc-1.0)
./create-index

Para usar o driver C++ para criar um índice do Atlas Search, defina o índice de pesquisa em seu aplicativo e chame o método create_one().

Observação

Os métodos de gerenciamento do Atlas Search Index são executados de forma assíncrona. Os métodos do driver podem ser gerados antes de confirmar que foram executados corretamente. Para determinar o status atual dos índices de pesquisa, chame o método list() em uma instância de exibição do índice de pesquisa.

1
2

O seguinte aplicação de amostra passa um nome de índice de pesquisa e definição para o método search_index_model() para indexar dinamicamente os campos em sua coleção. Em seguida, o aplicação passa as especificações do índice de pesquisa para o método create_one() para criar o índice de pesquisa. Para saber mais, consulte Referência de índice.

#include <bsoncxx/builder/basic/document.hpp>
#include <bsoncxx/builder/basic/kvp.hpp>
#include <mongocxx/client.hpp>
#include <mongocxx/instance.hpp>
#include <mongocxx/search_index_view.hpp>
using bsoncxx::builder::basic::kvp;
using bsoncxx::builder::basic::make_document;
using namespace mongocxx;
int main()
{
try
{
// Connect to your Atlas deployment
mongocxx::instance instance{};
mongocxx::uri uri("<connectionString>");
mongocxx::client client(uri);
// Access your database and collection
auto db = client["<databaseName>"];
auto collection = db["<collectionName>"];
// Create an index model with your index name and definition
auto siv = collection.search_indexes();
auto name = "<indexName>";
auto definition = make_document(kvp("mappings", make_document(kvp("dynamic", true))));
auto model = search_index_model(name, definition.view());
// Create the search index
siv.create_one(model);
std::cout << "Index created!" << std::endl;
}
catch (const std::exception& e)
{
std::cout<< "Exception: " << e.what() << std::endl;
}
return 0;
}

Você também pode criar múltiplos índices do Atlas Search de uma vez. Para cada índice de pesquisa que você quer criar, passe as especificações do índice de pesquisa para o método search_index_model(). Em seguida, adicione cada índice de pesquisa a um vetor e passe o vetor para o método create_many() para criar os índices de pesquisa:

#include <bsoncxx/builder/basic/document.hpp>
#include <bsoncxx/builder/basic/kvp.hpp>
#include <mongocxx/client.hpp>
#include <mongocxx/instance.hpp>
#include <mongocxx/search_index_view.hpp>
using bsoncxx::builder::basic::kvp;
using bsoncxx::builder::basic::make_document;
using namespace mongocxx;
int main()
{
try
{
// Connect to your Atlas deployment
mongocxx::instance instance{};
mongocxx::uri uri("<connectionString>");
mongocxx::client client(uri);
// Access your database and collection
auto db = client["<databaseName>"];
auto collection = db["<collectionName>"];
// Create index models and add them to a vector
auto siv = collection.search_indexes();
std::vector<search_index_model> models;
auto name1 = "<firstIndexName>";
auto definition1 = make_document(/* Add search index definition fields here */);
auto model1 = search_index_model(name1, definition1.view());
models.push_back(model1);
auto name2 = "<secondIndexName>";
auto definition2 = make_document(/* Add search index definition fields here */);
auto model2 = search_index_model(name2, definition2.view());
models.push_back(model2);
// Create the search indexes
siv.create_many(models);
std::cout << "Indexes created!" << std::endl;
}
catch (const std::exception& e)
{
std::cout<< "Exception: " << e.what() << std::endl;
}
return 0;
}
3
  • Sua connection string do Atlas. Para saber mais, consulte Conectar via Drivers.

  • O banco de dados e a collection para a qual você deseja criar o índice.

  • O nome do seu índice. Se você omitir o nome do índice, o Atlas Search nomeará o índice default.

4
g++ -o create-index create-index.cpp $(pkg-config --cflags --libs libmongocxx)
./create-index

Para usar o driver .NET/C# para criar um índice do Atlas Search:

  1. Crie um BsonDocument que defina o índice.

  2. Passe o BsonDocument para o método CreateOne() ou CreateOneAsync().

1
  1. Execute o seguinte comando para criar um novo diretório chamado csharp-create-index.

    mkdir csharp-create-index
  2. Execute o seguinte comando para mudar para o novo diretório.

    cd csharp-create-index
  3. Execute o seguinte comando para inicializar seu projeto.

    dotnet new console
2

Execute o seguinte comando:

dotnet add package MongoDB.Driver
3

Substitua os valores de espaço reservado no seguinte aplicação de exemplo , que utiliza o comando SearchIndexes.CreateOne para definir um índice do Atlas Search :

Valor
Descrição

<connection-string>

Sua connection string do Atlas. Para saber mais, consulte Conectar via Drivers.

<databaseName>

Banco de dados para o qual você deseja criar o índice.

<collectionName>

Coleção para a qual você deseja criar o índice.

<IndexName>

O nome do seu índice. Se você omitir o nome do índice, o Atlas Search nomeará o índice default.

<IndexDefinition>

A definição do seu índice. Para saber mais sobre a sintaxe de definição de índice, consulte Referência de índice.

1using MongoDB.Bson;
2using MongoDB.Driver;
3
4// connect to your Atlas deployment
5var uri = "<connection-string>";
6
7var client = new MongoClient(uri);
8
9var db = client.GetDatabase("<databaseName>");
10var collection = db.GetCollection<BsonDocument>("<collectionName>");
11
12// define your Atlas Search index
13var index = new BsonDocument
14{
15 { "mappings", new BsonDocument
16 {
17 { "dynamic", true }
18 }
19 }
20};
21
22var result = collection.SearchIndexes.CreateOne(index, "<indexName>");
23Console.WriteLine(result);

Substitua os valores de espaço reservado no seguinte aplicação de exemplo , que utiliza o comando SearchIndexes.CreateMany para definir um índice do Atlas Search :

Valor
Descrição

<connection-string>

Sua connection string do Atlas. Para saber mais, consulte Conectar via Drivers.

<databaseName>

Banco de dados para o qual você deseja criar o índice.

<collectionName>

Coleção para a qual você deseja criar o índice.

<firstIndexName>

Nome do seu primeiro índice.

<lastIndexName>

Nome do seu último índice.

<IndexDefinition>

A definição do seu índice. Para saber mais sobre a sintaxe de definição de índice, consulte Referência de índice.

1using MongoDB.Bson;
2using MongoDB.Driver;
3
4// connect to your Atlas deployment
5var uri = "<connection-string>";
6
7var client = new MongoClient(uri);
8
9var db = client.GetDatabase("<databaseName>");
10var collection = db.GetCollection<BsonDocument>("<collectionName>");
11
12// define your Atlas Search indexes
13var indexes = new List<CreateSearchIndexModel>
14{
15 new CreateSearchIndexModel(
16 "<firstIndexName>",
17 new BsonDocument
18 {
19 <IndexDefinition>// search index definition fields
20 }
21 ),
22 ...
23 new CreateSearchIndexModel(
24 "<lastIndexName>",
25 new BsonDocument
26 {
27 <IndexDefinition> // search index definition fields
28 }
29 )
30};
31
32var result = collection.SearchIndexes.CreateMany(indexes);
4

Use o seguinte comando para executar o projeto:

dotnet run csharp-create-index.csproj
default

Dica

Documentação da API

Para saber mais sobre os métodos desta página, consulte a documentação da API para o driver .NET/C#.

Para usar o Driver Java para criar um índice do Atlas Search, crie um documento que defina o índice de pesquisa e, em seguida, passe o documento para o método createSearchIndex() ou createSearchIndexes().

Observação

Os métodos de gerenciamento do Atlas Search Index são executados de forma assíncrona. Os métodos do driver podem ser gerados antes de confirmar que foram executados corretamente. Para determinar o status atual dos índices, chame o método listSearchIndexes().

1
2

O seguinte aplicação de amostra define um índice de pesquisa para indexar dinamicamente os campos em sua collection e depois executa o método createSearchIndex() para criar o índice. Para saber mais, consulte Referência de índice.

import com.mongodb.client.MongoClient;
import com.mongodb.client.MongoClients;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
import org.bson.Document;
public class CreateIndex {
public static void main(String[] args) {
// connect to your Atlas cluster
String uri = "<connection-string>";
try (MongoClient mongoClient = MongoClients.create(uri)) {
// set namespace
MongoDatabase database = mongoClient.getDatabase("<databaseName>");
MongoCollection<Document> collection = database.getCollection("<collectionName>");
Document index = new Document("mappings",
new Document("dynamic", true));
collection.createSearchIndex("<index-name>", index);
}
}
}

Você pode usar o seguinte aplicativo de exemplo para criar vários índices do Atlas Search de uma vez. Para fazer isso, crie um documento para cada índice de pesquisa que você deseja criar e, em seguida, passe os documentos como uma array para o método createSearchIndexes():

import com.mongodb.client.MongoClient;
import com.mongodb.client.MongoClients;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.model.SearchIndexModel;
import org.bson.Document;
import java.util.Arrays;
public class CreateIndex {
public static void main(String[] args) {
// connect to your Atlas cluster
String uri = "<connection-string>";
try (MongoClient mongoClient = MongoClients.create(uri)) {
// set namespace
MongoDatabase database = mongoClient.getDatabase("<databaseName>");
MongoCollection<Document> collection = database.getCollection("<collectionName>");
SearchIndexModel indexOne = new SearchIndexModel("<first-index-name>",
new Document(
// search index definition fields
));
SearchIndexModel indexTwo = new SearchIndexModel("<second-index-name>",
new Document(
// search index definition fields
));
collection.createSearchIndexes(Arrays.asList(indexOne, indexTwo));
}
}
}
3
  • Sua connection string do Atlas. Para saber mais, consulte Conectar via Drivers.

  • O banco de dados e a collection para a qual você deseja criar o índice.

  • Os nomes dos seus índices. Se você omitir o nome de um índice, o Atlas Search nomeará o índice default.

4
javac CreateIndex.java
java CreateIndex

Para criar um índice de pesquisa do Atlas Search por meio do Node Driver:

  1. Defina o índice de pesquisa do seu aplicativo.

  2. Execute o método assistente createSearchIndex ou createSearchIndexes .

1
2

Substitua os valores de espaço reservado no seguinte aplicação de exemplo denominado create-index.js, que utiliza o comando createSearchIndex para definir um índice do Atlas Search :

Valor
Descrição

<connectionString>

Sua connection string do Atlas. Para saber mais, consulte Conectar via Drivers.

<databaseName>

Banco de dados para o qual você deseja criar o índice.

<collectionName>

Coleção para a qual você deseja criar o índice.

<indexName>

Nome do seu índice. Se você omitir o nome do índice, o Atlas Search nomeará o índice default.

<IndexDefinition>

A definição do seu índice. Para saber mais sobre a sintaxe de definição de índice, consulte Referência de índice.

create-index.js
import { MongoClient } from "mongodb";
// connect to your Atlas deployment
const uri = "<connectionString>";
const client = new MongoClient(uri);
async function run() {
try {
const database = client.db("<databaseName>");
const collection = database.collection("<collectionName>");
// define your Atlas Search index
const index = {
name: "<indexName>",
definition: {
/* search index definition fields */
<indexDefinition>
}
}
// run the helper method
const result = await collection.createSearchIndex(index);
console.log(result);
} finally {
await client.close();
}
}
run().catch(console.dir);
Valor
Descrição

<connectionString>

Sua connection string do Atlas. Para saber mais, consulte Conectar via Drivers.

<databaseName>

Banco de dados para o qual você deseja criar o índice.

<collectionName>

Coleção para a qual você deseja criar o índice.

<indexName>

Nome do seu índice. Se você omitir o nome do índice, o Atlas Search nomeará o índice default.

<IndexDefinition>

A definição do seu índice. Para saber mais sobre a sintaxe de definição de índice, consulte Referência de índice.

Substitua os valores de espaço reservado no seguinte aplicação de exemplo denominado create-index.js, que utiliza o comando createSearchIndexes para definir um índice do Atlas Search :

create-index.js
import { MongoClient } from "mongodb";
// connect to your Atlas deployment
const uri = "<connection-string>";
const client = new MongoClient(uri);
async function run() {
try {
const database = client.db("<databaseName>");
const collection = database.collection("<collectionName>");
// define an array of Atlas Search indexes
const indexes = [
{
name: "<first-index-name>",
definition: {
/* search index definition fields */
}
},
...
{
name: "<last-index-name>",
definition: {
/* search index definition fields */
}
}
]
// run the helper method
const result = await collection.createSearchIndexes(indexes);
console.log(result);
} finally {
await client.close();
}
}
run().catch(console.dir);
3

Use o seguinte comando:

node create-index.js
<index-name>

Para usar o driver Python para criar um índice do Atlas Search, defina o índice de pesquisa do seu aplicativo e chame o método create_search_index().

Observação

Os métodos de gerenciamento do Atlas Search Index são executados de forma assíncrona. Os métodos do driver podem ser gerados antes de confirmar que foram executados corretamente. Para determinar o status atual dos índices de pesquisa, chame o método list_search_indexes() em sua coleção.

1
2

O seguinte aplicação de amostra define um índice de pesquisa para indexar dinamicamente os campos em sua collection. Em seguida, o aplicação chama o método create_search_index() em uma collection para criar o índice de pesquisa. Para saber mais, consulte Referência de índice.

from pymongo.mongo_client import MongoClient
from pymongo.operations import SearchIndexModel
def create_index():
# Connect to your Atlas deployment
uri = "<connectionString>"
client = MongoClient(uri)
# Access your database and collection
database = client["<databaseName>"]
collection = database["<collectionName>"]
# Create your index model, then create the search index
search_index_model = SearchIndexModel(
definition={
"mappings": {
"dynamic": True
},
},
name="<indexName>",
)
result = collection.create_search_index(model=search_index_model)
print(result)

Você também pode criar múltiplos índices do Atlas Search de uma vez. No seu aplicativo, defina uma array de índices de pesquisa. Em seguida, passe a array como parâmetro para o método create_search_indexes():

from pymongo.mongo_client import MongoClient
from pymongo.operations import SearchIndexModel
def create_indexes():
# Connect to your Atlas deployment
uri = "<connectionString>"
client = MongoClient(uri)
# Access your database and collection
database = client["<databaseName>"]
collection = database["<collectionName>"]
# Create your index models and add them to an array
first_model = SearchIndexModel(
definition={
# Add search index definition fields here
},
name="<firstIndexName>",
)
second_model = SearchIndexModel(
definition={
# Add search index definition fields here
},
name="<secondIndexName>",
)
idx_models = [first_model, second_model]
# Create the search indexes
result = collection.create_search_indexes(models=idx_models)
print(result)
3
  • Sua connection string do Atlas. Para saber mais, consulte Conectar via Drivers.

  • O banco de dados e a collection para a qual você deseja criar o índice.

  • O nome do seu índice. Se você omitir o nome do índice, o Atlas Search nomeará o índice default.

4
python create_index.py

Quando você cria o índice do Atlas Search , a página Atlas Search exibe informações sobre os índices do Atlas Search . A Status coluna mostra o estado atual do índice no nó primário do cluster. Para saber mais, consulte Status do índice.

Aviso

Se você fragmentar uma collection que já tenha um índice do Atlas Search, poderá passar por um breve período de inatividade de query quando a coleção começar a aparecer em um fragmento. Além disso, se você adicionar um fragmento a uma coleção já fragmentada que contenha um índice do Atlas Search, suas pesquisas nessa coleção falharão até que o processo de initial sync seja concluído nos fragmentos adicionados. Para saber mais, consulte processo de sincronização inicial.


➤ Use o menu suspenso Selecione seu idioma para definir o idioma do procedimento nesta seção.


Para listar todos os índices de pesquisa para um cluster utilizando o Atlas CLI, execute o seguinte comando:

atlas clusters search indexes list [options]

Para retornar os detalhes do índice de pesquisa que você especifica utilizando o Atlas CLI, execute o seguinte comando:

atlas clusters search indexes describe <indexId> [options]

Para saber mais sobre a sintaxe e os parâmetros dos comandos anteriores, consulte a documentação do Atlas CLI para Lista de índices doAtlas Atlas Search de Atlas do Atlas e Descrição dos índices do Atlas Search de clusters do Atlas.

Dica

Veja: links relacionados

Para descrever o índice de pesquisa especificado para determinada implantação utilizando o Atlas CLI, execute o seguinte comando:

atlas deployments search indexes describe [indexId] [options]

Para listar todos os índices do Atlas Search para o sistema especificado utilizando o Atlas CLI, execute o seguinte comando:

atlas deployments search indexes list [options]

Para saber mais sobre a sintaxe e os parâmetros dos comandos anteriores, consulte a documentação da CLI do Atlas para descrição de índices de pesquisa de implantações atlas e lista de índices de pesquisa de implantações atlas.

Dica

Veja: links relacionados

Para recuperar um índice do Atlas Search usando a API do Atlas Search :

1

Envie uma solicitação GET com o ID exclusivo ou o nome do índice do Atlas Search que você deseja recuperar para o endpoint search/indexes/.

curl --user "{PUBLIC-KEY}:{PRIVATE-KEY}" --digest \ --header "Accept: application/json" \
--include \
--request GET "https://cloud.mongodb.com/api/atlas/v2/groups/{groupId}/clusters/{clusterName}/search/indexes/{indexId}"

Para saber mais sobre a sintaxe e os parâmetros de um endpoint, consulte Obter um por nome e Obter um por ID.

2

Para recuperar todos os índices do Atlas Search para uma coleção:

1

Envie uma solicitação GET para o endpoint search/indexes/ com o nome da coleção cujos índices você quer recuperar.

curl --user "{PUBLIC-KEY}:{PRIVATE-KEY}" --digest \ --header "Accept: application/json" \
--include \
--request GET "https://cloud.mongodb.com/api/atlas/v2/groups/{groupId}/clusters/{clusterName}/search/indexes/{databaseName}/{collectionName}"
2

Para recuperar todos os índices do Atlas Search para um cluster:

1

Envie uma solicitação GET para o endpoint search/indexes/ com o nome do cluster cujos índices você deseja recuperar.

curl --user "{PUBLIC-KEY}:{PRIVATE-KEY}" --digest \ --header "Accept: application/json" \
--include \
--request GET "https://cloud.mongodb.com/api/atlas/v2/groups/{groupId}/clusters/{clusterName}/search/indexes"
2

Para visualizar a página da Interface do Usuário Atlas Search do Atlas :

1

Aviso

Melhorias na navegação em andamento

No momento, estamos lançando uma experiência de navegação nova e aprimorada. Se as etapas a seguir não corresponderem à sua visualização na UI do Atlas, consulte a documentação de visualização.

  1. Se ainda não tiver sido exibido, selecione a organização que contém seu projeto no menu Organizations na barra de navegação.

  2. Se ainda não estiver exibido, selecione o projeto desejado no menu Projects na barra de navegação.

  3. Se ainda não estiver exibido, clique em Clusters na barra lateral.

    A página Clusters é exibida.

2

Você pode acessar a página do Atlas Search pela barra lateral, pelo Data Explorer ou pela página de detalhes do cluster.

  1. Na barra lateral, clique em Atlas Search sob o título Services.

    Se você não tiver clusters, clique em Create cluster para criar um. Para saber mais, consulte Criar um cluster.

  2. Se o seu projeto tiver múltiplos clusters, selecione o cluster que deseja utilizar a partir do menu suspenso Select cluster e clique em Go to Atlas Search.

    A página Atlas Search é exibida.

  1. Clique no botão Browse Collections para o seu cluster.

  2. Expanda o banco de dados e selecione a coleção.

  3. Clique na guia Search Indexes da coleção.

    A página Atlas Search é exibida.

  1. Clique no nome do seu cluster.

  2. Clique na aba Atlas Search.

    A página Atlas Search é exibida.

A página Atlas Search contém uma tabela que descreve cada um dos índices de Atlas Search existentes no seu projeto nas colunas a seguir.

coluna
Descrição

Database

Nome do banco de dados que contém a coleção.

Collection

Nome da coleção indexada.

Index Name

Nome do índice.

Status

Status do índice no nó primário do cluster. Para saber mais, consulte Status do índice do Atlas Search.

Queryable

Ícone que identifica se a coleção pode passar por query usando o índice. O valor pode ser um dos seguintes ícones:

  • - para índices que você pode usar para consultar a coleção.

  • X - para índices que você não pode usar para consultar coleção.

Type

Tipo de índice. O valor pode ser um dos seguintes tipos de índice:

Index Fields

Campos indexados. O valor é dynamic se você habilitou mapeamentos dinâmicos. Para mapeamentos estáticos, a coluna mostra todos os campos indexados.

Documents

Número aproximado e porcentagem de documentos indexados em relação ao número total de documentos na coleção durante e após a criação do índice no nó primário ou de pesquisa no cluster.

Size

Tamanho do índice.

Actions

Ações que você pode realizar no índice:

  • Clique em Query para acessar o Search Tester e consultar a coleção.

  • Clique em e selecione uma das seguintes ações a serem executadas no índice:

Por padrão, o Atlas classifica os índices primeiro pelo nome do banco de dados e depois pelo nome da collection. Para classificar por várias colunas, pressione Shift e clique nos nomes das colunas na ordem em que você deseja classificar vários índices.

Nesta tabela, você pode acessar as seções a seguir para obter mais detalhes sobre cada índice:

Para ir para a Index Overview página a partir da Atlas Search página, clique no nome do índice que você deseja visualizar na Index Name coluna. Para cada índice, a Index Overview página mostra o namespace do índice e as seguintes configurações especificadas na definição do índice:

Linha
Descrição

Analisador de índice

analisador de texto escolhido que especifica como o texto é processado e tokenizado ao criar o índice de pesquisa.

Analisador de pesquisa

analisador de texto escolhido que especifica como o texto em suas queries de pesquisa é processado e tokenizado.

Mapeamento dinâmico

Booleano que indica se você habilitou ou não mapeamentos dinâmicos ou estáticos para seus mapeamentos de campo

Mapeamentos de campo

Quaisquer mapeamentos de campo especificados, incluindo nome do campo, tipo de dados e se o mapeamento dinâmico está habilitado para o campo individual

Campos de Origem Armazenados

Quaisquer campos de origem armazenadadefinidos

Mapeamentos de sinônimos

Quaisquer mapeamentos de sinônimos definidos para equivalentes de palavras

A coluna Status na página Atlas Search mostra o status atual do índice no nó primário do cluster. A tabela a seguir descreve os possíveis status de índice:

Status
Descrição

Pendente

Atlas ainda não começou a construir o índice.

Construção

O Atlas está construindo o índice ou reconstruindo o índice após uma edição. Quando o índice está neste estado:

  • Para um novo índice, o Atlas Search não atende às query até que a criação do índice esteja concluída.

  • Para um índice existente, você pode continuar usando o índice antigo para queries novas e existentes até que a recriação do índice seja concluída.

Pronto

O índice está pronto para uso.

Stale

O índice está obsoleto por qualquer um dos seguintes motivos:

  • A replicação foi interrompida devido à alta utilização do disco.

    O limite de pausa na replicação é 90% e o limite de retomada da replicação é 85% de utilização do disco.

  • Se a replicação parar por um longo período, o processo do Atlas Search mongot sairá do oplog.

    Esse estado geralmente ocorre quando o ponto de replicação atual não está mais disponível no oplog mongod. O Atlas reconstrói o índice se o processo mongot sair do oplog.

  • O índice atingiu o limite de dois bilhões de documentos.

  • A replicação falhou devido a um erro.

Você ainda pode executar uma query no índice existente. No entanto, os resultados das queries em um índice obsoleto podem conter dados obsoletos. Você pode aumentar a capacidade dos nós de pesquisa para obter mais espaço em disco e excluir os índices existentes para liberar espaço em disco. Como alternativa, use o erro na janela modal View status details para solucionar o problema. Para saber mais, consulte Corrigir problemas do Atlas Search.

Falhou

O Atlas não conseguiu criar o índice. Use o erro na janela modal View status details para solucionar o problema. Para saber mais, consulte Corrigir problemas do Atlas Search.

Excluindo

O Atlas está excluindo o índice dos nós de cluster.

Não existe.

O índice é inválido porque a coleção do índice não existe mais. Você não pode executar consultas nesse índice porque não há nenhuma coleção correspondente para esse índice. O Atlas acabará excluindo o índice.

Você pode ver mais informações de status na página Status Details de uma das seguintes maneiras:

  • Clique no link View status details na coluna Status.

  • Clique no nome na coluna Index Name e selecione Status Details no menu à esquerda do Index Overview.

A página Status Details contém as seguintes seções:

Esta seção exibe o índice que está sendo usado para atender às consultas.

Se você tem somente uma versão do índice com esse nome na coleção, a seção contém um link para o Index Overview onde você pode ver a definição de índice para o índice que está sendo usado.

Se você tinha outros índices com o mesmo nome na coleção, a seção mostra a definição de índice mais recente e também mostra as versões anteriores válidas do índice que você pode copiar em abas diferentes.

Quando você atualiza um índice, nós diferentes aplicam as atualizações em velocidades diferentes. Portanto, alguns nós podem usar a versão mais recente e alguns podem usar a versão anterior. O Atlas exibe ambas as versões do índice até que as alterações sejam aplicadas a todos os nós.

Se você tentar atualizar o índice com uma definição de índice inválida, a criação do índice falhará e o Atlas exibirá somente a definição de índice válida anterior.

Esta seção exibe o status do índice em cada nó do cluster. Você pode ver os seguintes detalhes sobre o índice em cada nó:

Shard

Nome do fragmento.

Node

Informações do nó.

Status

Status do índice no nó no fragmento.

Queryable

Ícone que indica se o índice pode atender às consultas.

Message

Motivo do status do índice. Para índices no estado Stale ou Failed, exibe o motivo pelo qual o índice está obsoleto ou por que a compilação do índice falhou.

Node Type

Tipo de nó. O valor pode ser um dos seguintes tipos:

  • Principal

  • secundário

  • Nó de pesquisa

Region

Região do nó.

Size

Tamanho do índice no nó.

Documents

Número e porcentagem de documentos indexados.

Actions

Ações que você pode executar no índice no nó. Você pode clicar em e selecionar uma das seguintes opções:

Esta seção exibe o status da migração em andamento dos índices do Atlas Search e Atlas Vector Search para os nós de pesquisa, se aplicável. Esta seção será exibida somente se você estiver migrando para nós de pesquisa.

Clique no link View Migration Progress no banner de informações na seção Index Status by Search Node para obter detalhes sobre o progresso da migração dos índices para os nós de pesquisa (por nó).

A interface do usuário do Atlas exibe as seguintes colunas para cada índice no cluster.

coluna
Descrição

Database

Nome do banco de dados que contém a coleção.

Collection

Nome da coleção indexada.

Index Name

Nome do índice.

Index Fields

Campos indexados. O valor é dynamic se você habilitou mapeamentos dinâmicos. Para mapeamentos estáticos, a coluna mostra todos os campos indexados.

Type

Tipo de índice. O valor pode ser um dos seguintes tipos de índice:

Status

Status da migração. Para saber mais, consulte Migração para nós de pesquisa.

Size

Tamanho do índice.

Documents

Número e porcentagem de documentos indexados em relação ao número total de documentos na coleção durante e após a migração nos nós de pesquisa no cluster.

A coluna de status exibe um dos seguintes status do índice nos nós de pesquisa:

Status
Descrição

Construção

Atualmente, o índice está sendo construído no Nó de Pesquisa. Suas consultas podem continuar usando índices existentes enquanto o novo índice está sendo criado.

On Deck

O índice foi criado com êxito nos nós de pesquisa, mas a migração ainda não foi concluída. A migração é concluída somente quando o Atlas cria com êxito todos os índices nos nós de pesquisa.

Pronto

O índice no nó de pesquisa está pronto para uso nas suas queries. Isso é exibido somente quando o Atlas conclui com êxito a migração para os nós de pesquisa.

Falhou

A criação do índice falhou e a migração para nós de pesquisa separados foi interrompida. Suas queries podem continuar usando os índices existentes. O Atlas tentará reconstruir o índice, mas atingirá o tempo limite após 7 dias.

Para migrar com sucesso, revise a mensagem de erro do índice na coluna Detalhes de status por Message nó ou na Status Details página do índice e resolva os problemas que estão fazendo com que a compilação do índice falhe nos nós de pesquisa.

Suas queries podem continuar usando índices existentes enquanto os novos índices são criados nos nós de pesquisa. A migração para os Nós de Pesquisa é concluída somente quando o Atlas cria com êxito todos os índices nos Nós de Pesquisa. Em seguida, suas queries são roteadas automaticamente para usar os índices nos nós de pesquisa.

Para recuperar os índices do Atlas Search por meio do mongosh, use o método db.collection.getSearchIndexes().

O comando tem a seguinte sintaxe. Se você omitir o nome do índice, o Atlas Search retornará todos os índices na coleção.

db.<collection>.getSearchIndexes("<index-name>")

O comando a seguir recupera um índice de pesquisa chamado default da coleção movies. Os resultados devem ser semelhantes ao resultado do exemplo:

db.movies.getSearchIndexes("default")
[
{
id: '648b4ad4d697b73bf9d2e5e0',
name: 'default',
status: 'READY',
queryable: true,
latestDefinition: { mappings: { dynamic: true } }
}
]

Para recuperar seus índices do Atlas Search por meio do Node Driver, use o método auxiliar listSearchIndexes .

Você pode usar o seguinte aplicativo de exemplo chamado list-indexes.js para retornar os índices em sua coleção. Especifique os seguintes valores:

  • Sua connection string do Atlas. Para saber mais, consulte Conectar via Drivers.

  • O banco de dados e a coleção que contêm os índices de pesquisa que você deseja recuperar.

  • O nome do índice se você desejar recuperar um índice específico. Para retornar todos os índices da collection, omita este valor.

Observação

O comando listSearchIndexes retorna um cursor. Como resultado, ele não retorna imediatamente os índices correspondentes ao comando. Para acessar os resultados, use um paradigma de cursor, como o método toArray() . Para saber mais, consulte Acessar dados de um cursor.

list-indexes.js
import { MongoClient } from "mongodb";
// connect to your Atlas deployment
const uri = "<connection-string>";
const client = new MongoClient(uri);
async function run() {
try {
const database = client.db("<databaseName>");
const collection = database.collection("<collectionName>");
// run the helper method
const result = await collection.listSearchIndexes("<index-name>").toArray();
console.log(result);
} finally {
await client.close();
}
}
run().catch(console.dir);

Para executar o aplicativo de amostra, use o seguinte comando. Seus resultados devem se assemelhar à saída do exemplo:

node list-indexes.js
[
{
id: '648b4ad4d697b73bf9d2e5e0',
name: 'default',
status: 'READY',
queryable: true,
latestDefinition: { mappings: { dynamic: true } }
},
{
id: '648b4ad4d697b73bf9d2e5e1',
name: 'example-index',
status: 'PENDING',
queryable: false,
latestDefinition: {
mappings: { dynamic: false, fields: { text: { type: 'string' } } }
}
}
]

Para usar o driver .NET/C# para recuperar seus índices do Atlas Search, use o método List() ou ListAsync().

O seguinte aplicativo de amostra retorna os índices em uma coleção. Especifique os seguintes valores:

  • Sua connection string do Atlas. Para saber mais, consulte Conectar via Drivers.

  • O banco de dados e a coleção que contêm os índices de pesquisa que você deseja recuperar.

Observação

O método List() retorna um cursor em vez dos próprios índices. Para acessar os índices, use um paradigma de cursor, como o método MoveNext().

Program.cs
using MongoDB.Bson;
using MongoDB.Driver;
// connect to your Atlas deployment
var uri = "<connection-string>";
var client = new MongoClient(uri);
var db = client.GetDatabase("<databaseName>");
var collection = db.GetCollection<BsonDocument>("<collectionName>");
// list your Atlas Search indexes
var result = collection.SearchIndexes.List().ToList();
foreach (var index in result)
{
Console.WriteLine(index);
}

Para executar o aplicativo de amostra, crie um novo projeto de console .NET chamado csharp-list-indexes e copie o exemplo de código anterior para o arquivo Program.cs. Em seguida, use o seguinte comando para executar o projeto:

dotnet run csharp-list-indexes.csproj
<indexes for this collection>

Dica

Documentação da API

Para saber mais sobre os métodos desta página, consulte a documentação da API para o driver .NET/C#.

Para recuperar os índices do Atlas Search em uma coleção usando o driver Java, use o método listSearchIndexes(). Você deve ter o driver Java v4.11.0 ou superior.

1
2

O seguinte aplicativo de amostra recupera todos os índices do Atlas Search em uma determinada coleção.

1import com.mongodb.client.MongoClient;
2import com.mongodb.client.MongoClients;
3import com.mongodb.client.MongoCollection;
4import com.mongodb.client.MongoCursor;
5import com.mongodb.client.MongoDatabase;
6import org.bson.Document;
7public class ViewIndex {
8 public static void main(String[] args) {
9 // connect to your Atlas cluster
10 String uri = "<connection-string>";
11 try (MongoClient mongoClient = MongoClients.create(uri)) {
12 // set namespace
13 MongoDatabase database = mongoClient.getDatabase("<database-name>");
14 MongoCollection<Document> collection = database.getCollection("<collection-name>");
15 // retrieve indexes
16 try (MongoCursor<Document> resultsCursor = collection.listSearchIndexes().iterator()) {
17 while (resultsCursor.hasNext()) {
18 System.out.println(resultsCursor.next());
19 }
20 }
21 }
22 }
23}
3
  • <connection-string> - Sua string de conexão do Atlas. Para saber mais, consulte Conectar via drivers.

  • <database-name> - O nome do banco de dados que contém a coleção.

  • <collection-name> - O nome da collection para a qual você deseja recuperar o índice.

4
javac ViewIndex.java
java ViewIndex

Veja também:

Para usar o driver C++ para recuperar os índices do Atlas Search, chame o método list() em uma visualização de índice de pesquisa.

1
2

O seguinte aplicativo de amostra usa o método search_indexes() na coleção de destino para instanciar uma exibição de índice de pesquisa. Em seguida, o aplicativo chama o método list() na exibição. Esse método retorna um cursor pelo qual o código acessa e imprime cada índice do Atlas Search.

#include <bsoncxx/json.hpp>
#include <mongocxx/client.hpp>
#include <mongocxx/instance.hpp>
#include <mongocxx/search_index_view.hpp>
using namespace mongocxx;
int main()
{
mongocxx::instance instance{};
try
{
// Connect to your Atlas deployment
mongocxx::uri uri("<connectionString>");
mongocxx::client client(uri);
// Access your database and collection
auto db = client["<databaseName>"];
auto collection = db["<collectionName>"];
// Access and print the indexes in your collection
auto siv = collection.search_indexes();
auto cursor = siv.list();
for (auto&& doc : cursor) {
std::cout << bsoncxx::to_json(doc) << std::endl;
};
}
catch (const std::exception& e)
{
std::cout<< "Exception: " << e.what() << std::endl;
}
return 0;
}
3
  • Sua connection string do Atlas. Para saber mais, consulte Conectar via Drivers.

  • O banco de dados e a coleção para os quais você deseja obter os índices.

4
g++ -o view-index view-index.cpp $(pkg-config --cflags --libs libmongocxx)
./view-index

Para usar o driver C para recuperar seus índices de Atlas Search , use o método mongoc_collection_aggregate() para criar um pipeline de agregação que inclua o estágio $listSearchIndexes .

1
2

O aplicativo de exemplo a seguir especifica o estágio $listSearchIndexes em um pipeline de agregação. Em seguida, o aplicativo passa o pipeline e a coleção de destino para o método mongoc_collection_aggregate(). Esse método retorna um cursor pelo qual o código acessa e imprime cada índice do Atlas Search:

#include <mongoc/mongoc.h>
#include <stdlib.h>
int main (void)
{
mongoc_client_t *client = NULL;
mongoc_collection_t *collection = NULL;
mongoc_database_t *database = NULL;
bson_error_t error;
bson_t cmd = BSON_INITIALIZER;
bool ok = true;
bson_t pipeline = BSON_INITIALIZER;
mongoc_cursor_t *cursor = NULL;
mongoc_init();
// Connect to your Atlas deployment
client = mongoc_client_new("<connectionString>");
if (!client) {
fprintf(stderr, "Failed to create a MongoDB client.\n");
ok = false;
goto cleanup;
}
// Access your database and collection
database = mongoc_client_get_database(client, "<databaseName>");
collection = mongoc_database_get_collection(database, "<collectionName>");
// Create an aggregation pipeline with the $listSearchIndexes stage
const char *pipeline_str =
BSON_STR ({"pipeline" : [ {"$listSearchIndexes" : {}} ]});
// Convert your aggregation pipeline to BSON
if (!bson_init_from_json(&pipeline, pipeline_str, -1, &error)) {
fprintf(stderr, "Failed to parse command: %s\n", error.message);
ok = false;
goto cleanup;
}
// Run the aggregation operation and iterate through the indexes returned
cursor = mongoc_collection_aggregate (collection,
MONGOC_QUERY_NONE,
&pipeline,
NULL,
NULL);
const bson_t *got;
char *str;
while (mongoc_cursor_next (cursor, &got)) {
str = bson_as_canonical_extended_json (got, NULL);
printf ("%s\n", str);
bson_free (str);
}
if (mongoc_cursor_error (cursor, &error)) {
fprintf (stderr, "Failed to iterate all documents: %s\n", error.message);
ok = false;
goto cleanup;
}
cleanup:
mongoc_cursor_destroy(cursor);
mongoc_collection_destroy(collection);
mongoc_database_destroy(database);
mongoc_client_destroy(client);
bson_destroy(&pipeline);
bson_destroy(&cmd);
mongoc_cleanup ();
return ok ? EXIT_SUCCESS : EXIT_FAILURE;
}
3
  • Sua connection string do Atlas. Para saber mais, consulte Conectar via Drivers.

  • O banco de dados e a coleção para os quais você deseja obter os índices.

4
gcc -o view-index view-index.c $(pkg-config --libs --cflags libmongoc-1.0)
./view-index

Para usar o Python Driver para recuperar os índices do Atlas Search, chame o método list_search_indexes() em sua coleção.

1
2

O aplicativo de exemplo a seguir chama o método list_search_indexes() em uma coleção. Esse método retorna um cursor pelo qual o código acessa e imprime cada índice do Atlas Search:

from pymongo.mongo_client import MongoClient
def view_index():
# Connect to your Atlas deployment
uri = "<connectionString>"
client = MongoClient(uri)
# Access your database and collection
database = client["<databaseName>"]
collection = database["<collectionName>"]
# Get a list of the collection's search indexes and print them
cursor = collection.list_search_indexes()
for index in cursor:
print(index)
3
  • Sua connection string do Atlas. Para saber mais, consulte Conectar via Drivers.

  • O banco de dados e a coleção para os quais você deseja obter os índices.

4
python view_index.py

Para retomar ou excluir sua definição de índice que você salvou como rascunho na UI do Atlas :

Importante

Você não pode criar um novo índice quando tiver um rascunho de índice pendente.

1

Aviso

Melhorias na navegação em andamento

No momento, estamos lançando uma experiência de navegação nova e aprimorada. Se as etapas a seguir não corresponderem à sua visualização na UI do Atlas, consulte a documentação de visualização.

  1. Se ainda não tiver sido exibido, selecione a organização que contém seu projeto no menu Organizations na barra de navegação.

  2. Se ainda não estiver exibido, selecione o projeto desejado no menu Projects na barra de navegação.

  3. Se ainda não estiver exibido, clique em Clusters na barra lateral.

    A página Clusters é exibida.

2

Você pode acessar a página do Atlas Search pela barra lateral, pelo Data Explorer ou pela página de detalhes do cluster.

  1. Na barra lateral, clique em Atlas Search sob o título Services.

    Se você não tiver clusters, clique em Create cluster para criar um. Para saber mais, consulte Criar um cluster.

  2. Se o seu projeto tiver múltiplos clusters, selecione o cluster que deseja utilizar a partir do menu suspenso Select cluster e clique em Go to Atlas Search.

    A página Atlas Search é exibida.

  1. Clique no botão Browse Collections para o seu cluster.

  2. Expanda o banco de dados e selecione a coleção.

  3. Clique na guia Search Indexes da coleção.

    A página Atlas Search é exibida.

  1. Clique no nome do seu cluster.

  2. Clique na aba Atlas Search.

    A página Atlas Search é exibida.

3
4
  1. Clique em Cancel.

  2. Clique em Save Draft ou Delete Draft.

5
  1. Clique em Refine Your Index para fazer alterações na configuração do seu índice.

  2. Clique em Save Changes.

6

O Atlas exibe um aviso breve e não interativo para informar que seu índice está sendo construído.

7

O índice recém-criado aparece na aba Atlas Search. Enquanto o índice está construindo, o campo StatusBuild in Progress. Quando o índice terminar de construir, o campo StatusActive.

Observação

Collections maiores demoram mais tempo para indexar. Você receberá uma notificação por e-mail quando seu índice terminar a criação.

Você pode alterar a definição de índice de um índice existente do Atlas Search. Não é possível renomear um índice; se você precisar alterar o nome de um índice, deverá criar um novo índice e excluir o antigo.

Você pode editar um índice do Atlas Search na UI do Atlas ou programaticamente usando mongosh, a Atlas CLI, a API ou um driver MongoDB compatível na linguagem de sua preferência.


➤ Use o menu suspenso Selecione seu idioma para definir o idioma do procedimento nesta seção.


Para editar um índice do Atlas Search usando a API:

1

Envie uma solicitação PATCH com o ID exclusivo ou o nome do índice do Atlas Search que você deseja modificar para o ponto de extremidade search/indexes/.

curl --user "{PUBLIC-KEY}:{PRIVATE-KEY}" --digest \
--header "Accept: application/json" \
--header "Content-Type: application/json" \
--include \
--request PATCH "https://cloud.mongodb.com/api/atlas/v2/groups/{groupId}/clusters/{clusterName}/search/indexes/{indexId}" \
--data '
{
"definition":
{
"analyzer": "lucene.<analyzer>",
"analyzers": [
{
"charFilters": [ ... ],
"name": "string",
"tokenFilters": [ ... ],
"tokenizer": { ... }
}
],
"mappings": {
"dynamic": true | false,
"fields": {
"property1": {},
...
}
},
"searchAnalyzer": "<analyzer-name>",
"storedSource": {
"include | exclude": [...]
},
"synonyms": [
{
<synonym-mapping-definition>
}
}
]
}
}'

Para saber mais sobre a sintaxe e os parâmetros de um dos endpoints, consulte Atualizar um por nome e Atualizar um por ID.

2

Para atualizar um índice de pesquisa para um cluster utilizando o Atlas CLI, execute o seguinte comando:

atlas clusters search indexes update <indexId> [options]

Para saber mais sobre a sintaxe e os parâmetros do comando, consulte a documentação do Atlas CLI para atualização de índices de pesquisa dos clusters do Atlas.

1

Aviso

Melhorias na navegação em andamento

No momento, estamos lançando uma experiência de navegação nova e aprimorada. Se as etapas a seguir não corresponderem à sua visualização na UI do Atlas, consulte a documentação de visualização.

  1. Se ainda não tiver sido exibido, selecione a organização que contém seu projeto no menu Organizations na barra de navegação.

  2. Se ainda não estiver exibido, selecione o projeto desejado no menu Projects na barra de navegação.

  3. Se ainda não estiver exibido, clique em Clusters na barra lateral.

    A página Clusters é exibida.

2

Você pode acessar a página do Atlas Search pela barra lateral, pelo Data Explorer ou pela página de detalhes do cluster.

  1. Na barra lateral, clique em Atlas Search sob o título Services.

    Se você não tiver clusters, clique em Create cluster para criar um. Para saber mais, consulte Criar um cluster.

  2. Se o seu projeto tiver múltiplos clusters, selecione o cluster que deseja utilizar a partir do menu suspenso Select cluster e clique em Go to Atlas Search.

    A página Atlas Search é exibida.

  1. Clique no botão Browse Collections para o seu cluster.

  2. Expanda o banco de dados e selecione a coleção.

  3. Clique na guia Search Indexes da coleção.

    A página Atlas Search é exibida.

  1. Clique no nome do seu cluster.

  2. Clique na aba Atlas Search.

    A página Atlas Search é exibida.

3
  • Edit With Visual Editor Para uma experiência guiada.

  • Edit With JSON Editor Para editar a definição do índice bruto.

4

Revise as seguintes configurações de índice:

Campo do Editor Visual
Descrição
necessidade

Index Analyzer

Especifique o analisador a ser usado para indexar os dados da coleção Por padrão, o Atlas Search utiliza o analisador padrão (lucene.standard).

Corresponde à configuração JSON do analyzer.

Opcional

Search Analyzer

Especifica o analisador a ser aplicado ao texto de consulta antes de pesquisar o texto. Se você omitir este campo, o índice herda um analisador por padrão na seguinte ordem:

  1. A opção analyzer para este campo, se especificado.

  2. A opção searchAnalyzer para o índice se especificado.

  3. A opção analyzer para o índice se especificado.

  4. O analisador lucene.standard.

Corresponde à configuração JSON do searchAnalyzer.

Opcional

Dynamic Mapping

Especifique o mapeamento dinâmico ou estático dos campos.

Por padrão, o mapeamento dinâmico está habilitado. Para desativar o mapeamento dinâmico, defina dynamic como Off. Se você desabilitar o mapeamento dinâmico, deverá especificar os campos para indexar.

Para saber mais sobre mapeamentos dinâmicos e estáticos, consulte Definir mapeamentos de campo.

Corresponde à configuração JSON do mappings.dynamic.

Obrigatório

Revise as seguintes configurações avançadas:

Nome do campo
Descrição
necessidade

Field Mappings

Obrigatório se Dynamic Mapping na seção Index Configurations estiver desabilitado.

Especifique os campos no índice:

  1. Clique em Add Field Mapping para abrir a janela Add Field Mapping.

  2. Especifique as seguintes informações sobre o campo:

    • Field name - Nome do campo a ser indexado.

    • Data Type - Tipo de dados do campo. Para saber mais sobre os tipos de dados aceitos e suas opções, consulte Tipos de dados.

  3. (Opcional) Especifique propriedades adicionais.

    Uma tabela de opções de configuração adicionais aparece na janela Add Field Mapping. Estas propriedades dependem do tipo de dados que você selecionou na última etapa.

    Para saber mais sobre os tipos de dados aceitos e suas opções, consulte Tipos de dados.

  4. (Opcional) Adicione vários campo.

    Clique em Add Multi Field para configurar um analisador de campo alternativo com o qual indexar o campo. Para saber mais, consulte Multianalisador.

  5. Clique em Add para adicionar o campo.

    Você pode clicar no ícone de reticências (...) do campo , na coluna Actions, para fazer o seguinte:

    • Clique em Edit para modificar a configuração.

    • Clique em Add Data Type para configurar tipos de dados adicionais para o campo.

    • Clique em Delete para remover o campo do índice.

Para saber mais sobre como definir mapeamentos de campo, consulte Referência de índice.

Corresponde à configuração JSON do mappings.fields.

Condicional

Stored Source Fields

Especifique os campos para armazenar no Atlas Search para pesquisas de tempo de query. Você pode armazenar campos de todos os tipos de dados suportados na Atlas Search.

Para saber mais sobre como armazenar campos, consulte Definir campos de origem armazenados em seu índice do Atlas Search.

Corresponde à configuração JSON do storedSource.

Opcional

Synonyms Mappings

Especifique mapeamentos de sinônimos para usar em seu índice.

Você pode utilizar um mapeamento de sinônimo para fazer uma query somente em campos analisados com o mesmo analisador.

Para saber mais sobre mapeamentos de sinônimos, consulte Definir mapeamentos de sinônimos no índice do Atlas Search.

Corresponde à configuração JSON do synonyms.

Opcional.

Index Partitions

O número de partições a serem usadas se os objetos de campo excederem 2.1 bilhões.

Corresponde à configuração JSON do numPartitions.

Opcional.

Revise as seguintes configurações de índice:

Nome do campo
Descrição
necessidade

analyzer

Especifique o analisador a ser usado para indexar os dados da coleção Por padrão, o Atlas Search utiliza o analisador padrão (lucene.standard).

Opcional

searchAnalyzer

Especifica o analisador a ser aplicado ao texto de consulta antes de pesquisar o texto. Se você omitir este campo, o índice herda um analisador por padrão na seguinte ordem:

  1. A opção analyzer para este campo, se especificado.

  2. A opção searchAnalyzer para o índice se especificado.

  3. A opção analyzer para o índice se especificado.

  4. O analisador lucene.standard.

Opcional

mappings.dynamic

Especifique o mapeamento dinâmico ou estático dos campos. Para desativar o mapeamento dinâmico, defina "dynamic": como false. Por padrão, o mapeamento dinâmico está habilitado. Se você desabilitar o mapeamento dinâmico, deverá especificar os campos para indexar. Para saber mais sobre mapeamentos dinâmicos e estáticos, consulte Referência de índice.

Obrigatório

Revise as seguintes configurações avançadas:

Nome do campo
Descrição
necessidade

mappings.fields

Obrigatório se mappings.dynamic for false.

Especifique os campos que você deseja indexar. Para saber mais, consulte Definir mapeamentos de campo.

Condicional

storedSource

Especifique os campos para armazenar no Atlas Search para pesquisas de tempo de query. Você pode armazenar campos de todos os tipos de dados suportados na Atlas Search.

Para saber mais sobre como armazenar campos, consulte Definir campos de origem armazenados em seu índice do Atlas Search.

Opcional

synonyms

Especifique mapeamentos de sinônimos para usar em seu índice.

Você pode utilizar um mapeamento de sinônimo para fazer uma query somente em campos analisados com o mesmo analisador.

Para saber mais sobre mapeamentos de sinônimos, consulte Definir mapeamentos de sinônimos no índice do Atlas Search.

Opcional

numPartitions

O número de partições a serem usadas se os objetos de campo excederem 2.1 bilhões.

Opcional.

Para saber mais sobre essas configurações de definição de índice, consulte Referência de índice.

5

O status do índice muda de Active para Building. Nesse estado, você pode continuar usando o índice antigo porque o Atlas Search não exclui o índice antigo até que o índice atualizado esteja pronto para uso. Após o status retornar para Active, o índice modificado estará pronto para ser utilizado.

Para editar um índice do Atlas Search por meio mongosh, use o método db.collection.updateSearchIndex() .

O comando tem a seguinte sintaxe. Especifique o nome do índice que você deseja editar e defina a nova definição de índice. Esta definição substitui a definição existente do índice. Para saber mais, consulte Referência de índice.

db.<collection>.updateSearchIndex(
"<index-name>",
/* updated search index definition */
)

O comando a seguir atualiza um índice de pesquisa chamado default da coleção movies para usar mapeamentos estáticos:

db.movies.updateSearchIndex(
"default",
{
"mappings": {
"dynamic": false,
"fields": {
"<field-name>": {
"type": "<field-type>"
}
}
}
)

Observação

O comando db.collection.updateSearchIndex() não retorna uma saída. Você pode utilizar a interface do usuário do Atlas para visualizar o status do índice.

Para editar um índice do Atlas Search usando o MongoDB Compass:

1
2
3
4

Para usar o driver C para editar seus índices do Atlas Search, especifique as informações de índice atualizadas no aplicativo e chame o método mongoc_collection_command_simple().

1
2

O aplicativo de amostra a seguir especifica o comando updateSearchIndex, uma definição de índice atualizada e um nome de índice existente. Em seguida, o aplicativo converte o comando e as informações atualizadas do índice em BSON e passa essas informações para o método mongoc_collection_command_simple() para editar o índice de pesquisa.

#include <mongoc/mongoc.h>
#include <stdlib.h>
int main (void)
{
mongoc_client_t *client = NULL;
mongoc_collection_t *collection = NULL;
mongoc_database_t *database = NULL;
bson_error_t error;
bson_t cmd = BSON_INITIALIZER;
bool ok = true;
mongoc_init();
// Connect to your Atlas deployment
client = mongoc_client_new("<connectionString>");
if (!client) {
fprintf(stderr, "Failed to create a MongoDB client.\n");
ok = false;
goto cleanup;
}
// Access your database and collection
database = mongoc_client_get_database(client, "<databaseName>");
collection = mongoc_database_get_collection(database, "<collectionName>");
// Specify the command and the updated index definition
const char *cmd_str = BSON_STR({
"updateSearchIndex" : "<collectionName>",
"definition" : {"mappings" : {"dynamic" : true}},
"name" : "<indexName>"
});
// Convert your command to BSON
if (!bson_init_from_json(&cmd, cmd_str, -1, &error)) {
fprintf(stderr, "Failed to parse command: %s\n", error.message);
ok = false;
goto cleanup;
}
// Update the Atlas search index by running the command
if (!mongoc_collection_command_simple (collection, &cmd, NULL, NULL, &error)) {
fprintf(stderr, "Failed to run updateSearchIndex: %s\n", error.message);
ok = false;
goto cleanup;
}
printf ("Index updated!\n");
cleanup:
mongoc_collection_destroy (collection);
mongoc_database_destroy (database);
mongoc_client_destroy (client);
bson_destroy (&cmd);
mongoc_cleanup ();
return ok ? EXIT_SUCCESS : EXIT_FAILURE;
}
3
  • Sua connection string do Atlas. Para saber mais, consulte Conectar via Drivers.

  • O banco de dados e a coleção para os quais você deseja atualizar um índice.

  • O nome do índice que você deseja atualizar.

  • Os campos para redefinir seu índice de pesquisa. Para saber mais, consulte Referência de índice.

4
gcc -o edit-index edit-index.c $(pkg-config --libs --cflags libmongoc-1.0)
./edit-index

Para usar o driver C++ para editar um índice do Atlas Search, chame o método update_one() em uma visualização de índice de pesquisa.

1
2

O aplicativo de exemplo a seguir instancia uma visualização do índice de pesquisa e especifica uma nova definição de índice do Atlas Search. Em seguida, o aplicativo passa essa definição e um nome de índice existente para o método update_one(), que atualiza o índice existente para refletir o novo documento de definição.

#include <bsoncxx/builder/basic/document.hpp>
#include <mongocxx/client.hpp>
#include <mongocxx/instance.hpp>
#include <mongocxx/search_index_view.hpp>
using namespace mongocxx;
using bsoncxx::builder::basic::make_document;
int main()
{
mongocxx::instance instance{};
try
{
// Connect to your Atlas deployment
mongocxx::uri uri("<connectionString>");
mongocxx::client client(uri);
// Access your database and collection
auto db = client["<databaseName>"];
auto collection = db["<collectionName>"];
// Access the indexes in your collection
auto siv = collection.search_indexes();
// Specify a new definiton and update your search index
auto newDefinition = make_document(kvp("mappings", make_document(kvp("dynamic", true))));
siv.update_one("<indexName>", newDefinition.view());
}
catch (const std::exception& e)
{
std::cout<< "Exception: " << e.what() << std::endl;
}
return 0;
}
3
  • Sua connection string do Atlas. Para saber mais, consulte Conectar via Drivers.

  • O banco de dados e a coleção para os quais você deseja atualizar um índice.

  • O nome do índice que você deseja atualizar.

  • Os campos para redefinir seu índice de pesquisa. Para saber mais, consulte Referência de índice.

4
g++ -o edit-index edit-index.cpp $(pkg-config --cflags --libs libmongocxx)
./edit-index

Para usar o driver .NET/C# para editar um índice do Atlas Search, use o método Update() ou UpdateAsync().

O aplicativo de exemplo a seguir atualiza uma definição de índice existente. Especifique os seguintes valores:

  • Sua connection string do Atlas. Para saber mais, consulte Conectar via Drivers.

  • O banco de dados e a coleção onde você criou o índice de pesquisa.

  • A nova definição de índice para substituir a definição existente. No exemplo, você atualiza um índice para utilizar mapeamentos estáticos. Você pode alterar esta definição para atender às suas necessidades de indexação específicas. Para saber mais, consulte Referência de índice.

  • O nome do índice que você deseja atualizar.

Program.cs
using MongoDB.Bson;
using MongoDB.Driver;
// connect to your Atlas deployment
var uri = "<connection-string>";
var client = new MongoClient(uri);
var db = client.GetDatabase("<databaseName>");
var collection = db.GetCollection<BsonDocument>("<collectionName>");
// define your Atlas Search index
var index = new BsonDocument
{
// updated search index definition
{ "mappings", new BsonDocument
{
{ "dynamic", false },
{ "fields", new BsonDocument
{
{ "<field-name>", new BsonDocument
{
{ "type", "<field-type>" }
}
}
}
}
}
}
};
collection.SearchIndexes.Update("<index-name>", index);

Para executar o aplicativo de amostra, crie um novo projeto de console .NET chamado csharp-update-index e copie o exemplo de código anterior para o arquivo Program.cs. Em seguida, use o seguinte comando para executar o projeto:

dotnet run csharp-update-index.csproj

Observação

O método Update() não retorna uma saída. Você pode utilizar a interface do usuário do Atlas para visualizar o status do índice.

Dica

Documentação da API

Para saber mais sobre os métodos desta página, consulte a documentação da API para o driver .NET/C#.

Para processar um índice de Atlas Search em uma coleção usando o driver Java, crie um documento que modifique as configurações do índice de pesquisa e, em seguida, passe o documento para o método updateSearchIndex(). Você deve ter o driver Java v4.11.0 ou superior.

1
2
1import com.mongodb.client.MongoClient;
2import com.mongodb.client.MongoClients;
3import com.mongodb.client.MongoCollection;
4import com.mongodb.client.MongoDatabase;
5import org.bson.Document;
6
7public class EditIndex {
8 public static void main(String[] args) {
9 // connect to your Atlas cluster
10 String uri = "<connection-string>";
11
12 try (MongoClient mongoClient = MongoClients.create(uri)) {
13 // set namespace
14 MongoDatabase database = mongoClient.getDatabase("<document-name>");
15 MongoCollection<Document> collection = database.getCollection("<collection-name>");
16 // define field mappings
17 Document index = new Document("analyzer", "<analyzer-name>").append(
18 "mappings", new Document("dynamic", <true|false>)
19 .append("fields", new Document("<field-name>",
20 new Document("type", "<field-type>"))));
21 // run the updateSearchIndex() method
22 collection.updateSearchIndex("<index-name>", index);
23 }
24 }
25}
3
  • <connection-string> - Sua string de conexão do Atlas. Para saber mais, consulte Conectar via drivers.

    Observação

    Na sua string de conexão, não inclua a configuração writeConcern .

  • <database-name> - O nome do banco de dados que contém a coleção.

  • <collection-name> - O nome da collection para a qual você deseja recuperar o índice.

  • <analyzer-name> - O nome do analisador.

  • dynamic - O sinalizador que indica se os campos devem ou não ser indexados indexados.

  • <field-name> - O nome do campo a ser indexado.

  • <field-type> - O tipo de dados do campo.

  • <index-name> - O nome do índice.

4
javac EditIndex.java
java EditIndex

O método updateSearchIndex() é executado de forma assíncrona. Use o método listSearchIndexes() para determinar se as alterações foram aplicadas ao seu índice. Para saber mais sobre como recuperar índices do Atlas Search, consulte Visualizar índices do Atlas Search.

Veja também:

Para editar um índice do Atlas Search pelo driver Node, use o método de assistente updateSearchIndex.

Você pode usar o aplicativo de exemplo a seguir chamado update-index.js para atualizar uma definição de índice existente. Especifique os seguintes valores:

  • Sua connection string do Atlas. Para saber mais, consulte Conectar via Drivers.

  • O banco de dados e a coleção onde você criou o índice de pesquisa.

  • A nova definição de índice para substituir a definição existente. No exemplo, você atualiza um índice para utilizar mapeamentos estáticos. Você pode alterar esta definição para atender às suas necessidades de indexação específicas. Para saber mais, consulte Referência de índice.

  • O nome do índice que você deseja atualizar.

update-index.js
import { MongoClient } from "mongodb";
// connect to your Atlas deployment
const uri = "<connection-string>";
const client = new MongoClient(uri);
async function run() {
try {
const database = client.db("<databaseName>");
const collection = database.collection("<collectionName>");
// define your Atlas Search index
const index = {
/* updated search index definition */
"mappings": {
"dynamic": false,
"fields": {
"<field-name>": {
"type": "<field-type>"
}
}
}
}
// run the helper method
await collection.updateSearchIndex("<index-name>", index);
} finally {
await client.close();
}
}
run().catch(console.dir);

Para executar o aplicativo de amostra, use o seguinte comando:

node update-index.js

Observação

O método updateSearchIndex não retorna uma saída. Você pode utilizar a interface do usuário do Atlas para visualizar o status do índice.

Para usar o driver Python para atualizar os índices do Atlas Search, chame o método update_search_index() na sua coleção.

1
2

O aplicativo de exemplo a seguir especifica uma nova definição de índice do Atlas Search. Em seguida, o aplicativo passa essa definição e um nome de índice existente para o método update_search_index(), que atualiza o índice existente para refletir o novo documento de definição.

from pymongo.mongo_client import MongoClient
def edit_index():
# Connect to your Atlas deployment
uri = "<connectionString>"
client = MongoClient(uri)
# Access your database and collection
database = client["<databaseName>"]
collection = database["<collectionName>"]
# Specify a new index definition
definition = {
"mappings": {
"dynamic": True
},
}
# Update your search index
collection.update_search_index("<indexName>", definition)
3
  • Sua connection string do Atlas. Para saber mais, consulte Conectar via Drivers.

  • O banco de dados e a coleção para os quais você deseja atualizar um índice.

  • O nome do índice que você deseja atualizar.

  • Os campos para redefinir seu índice de pesquisa. Para saber mais, consulte Referência de índice.

4
python edit_index.py

Observação

Enquanto seu índice atualizado está sendo criado, nós diferentes podem ser atualizados em velocidades diferentes. Durante esse período, você pode enfrentar resultados de query mistos, refletindo tanto a nova definição de índice quanto a definição de índice anterior. Você pode visualizar o índice que está atendendo as queries na página de detalhes do status do índice.

Alguns recursos do Atlas Search exigem que você atualize o índice. Para atualizar seu índice, você pode realizar uma das seguintes ações:

  • Edite a definição do índice utilizando as etapas em Editar um índice do Atlas Search.

  • Execute as seguintes etapas para aceitar uma atualização de índice da UI do Atlas :

Importante

O processo de atualização do índice do Atlas Search exige tempo e recursos. Para que a atualização do índice seja concluída com êxito, aloque espaço livre em disco igual a 125% do espaço em disco do índice atual.

1

Aviso

Melhorias na navegação em andamento

No momento, estamos lançando uma experiência de navegação nova e aprimorada. Se as etapas a seguir não corresponderem à sua visualização na UI do Atlas, consulte a documentação de visualização.

  1. Se ainda não tiver sido exibido, selecione a organização que contém seu projeto no menu Organizations na barra de navegação.

  2. Se ainda não estiver exibido, selecione o projeto desejado no menu Projects na barra de navegação.

  3. Se ainda não estiver exibido, clique em Clusters na barra lateral.

    A página Clusters é exibida.

2

Você pode acessar a página do Atlas Search pela barra lateral, pelo Data Explorer ou pela página de detalhes do cluster.

  1. Na barra lateral, clique em Atlas Search sob o título Services.

    Se você não tiver clusters, clique em Create cluster para criar um. Para saber mais, consulte Criar um cluster.

  2. Se o seu projeto tiver múltiplos clusters, selecione o cluster que deseja utilizar a partir do menu suspenso Select cluster e clique em Go to Atlas Search.

    A página Atlas Search é exibida.

  1. Clique no botão Browse Collections para o seu cluster.

  2. Expanda o banco de dados e selecione a coleção.

  3. Clique na guia Search Indexes da coleção.

    A página Atlas Search é exibida.

  1. Clique no nome do seu cluster.

  2. Clique na aba Atlas Search.

    A página Atlas Search é exibida.

3

Dica

Se um índice exigir uma atualização para habilitar uma nova funcionalidade, a UI do Atlas mostrará um ícone de aviso próximo ao nome do índice.

4
  1. Na página Index Overview, clique em Update no banner.

  2. Clique em Update Index na janela de confirmação.

    Enquanto seu índice estiver atualizando, você pode continuar consultando sua collection usando seu índice anterior.

Você pode excluir um índice do Atlas Search na UI do Atlas ou programaticamente usando mongosh, a Atlas CLI, a API ou um driver MongoDB compatível em seu idioma preferido.


➤ Use o menu suspenso Selecione seu idioma para definir o idioma do procedimento nesta seção.


Para excluir um índice do Atlas Search por meio da API:

1

Envie uma solicitação DELETE com o ID ou nome exclusivo do índice do Atlas Search que você quer excluir para o endpoint search/indexes/.

curl --user "{PUBLIC-KEY}:{PRIVATE-KEY}" --digest \ --header "Accept: application/json" \
--include \
--request DELETE "https://cloud.mongodb.com/api/atlas/v2/groups/{groupId}/clusters/{clusterName}/search/indexes/{indexId}"

Para saber mais sobre a sintaxe e os parâmetros de um dos endpoints, consulte Excluir um por nome e Excluir um por ID.

2

Para excluir um índice de pesquisa de um agrupamento utilizando o Atlas CLI, execute o seguinte comando:

atlas clusters search indexes delete <indexId> [options]

Para saber mais sobre a sintaxe e os parâmetros do comando, consulte a documentação do Atlas CLI sobre excluir índices de pesquisa dos clusters do Atlas.

Para excluir o índice de pesquisa especificado para o sistema especificado utilizando o Atlas CLI, execute o seguinte comando:

atlas deployments search indexes delete <indexId> [options]

Para saber mais sobre a sintaxe e os parâmetros do comando, consulte a documentação da Atlas CLI do Atlas para Atlas índices do Atlas Search nas implantações do Atlas.

1

Aviso

Melhorias na navegação em andamento

No momento, estamos lançando uma experiência de navegação nova e aprimorada. Se as etapas a seguir não corresponderem à sua visualização na UI do Atlas, consulte a documentação de visualização.

  1. Se ainda não tiver sido exibido, selecione a organização que contém seu projeto no menu Organizations na barra de navegação.

  2. Se ainda não estiver exibido, selecione o projeto desejado no menu Projects na barra de navegação.

  3. Se ainda não estiver exibido, clique em Clusters na barra lateral.

    A página Clusters é exibida.

2

Você pode acessar a página do Atlas Search pela barra lateral, pelo Data Explorer ou pela página de detalhes do cluster.

  1. Na barra lateral, clique em Atlas Search sob o título Services.

    Se você não tiver clusters, clique em Create cluster para criar um. Para saber mais, consulte Criar um cluster.

  2. Se o seu projeto tiver múltiplos clusters, selecione o cluster que deseja utilizar a partir do menu suspenso Select cluster e clique em Go to Atlas Search.

    A página Atlas Search é exibida.

  1. Clique no botão Browse Collections para o seu cluster.

  2. Expanda o banco de dados e selecione a coleção.

  3. Clique na guia Search Indexes da coleção.

    A página Atlas Search é exibida.

  1. Clique no nome do seu cluster.

  2. Clique na aba Atlas Search.

    A página Atlas Search é exibida.

3

O botão ellipsis está localizado no lado direito do painel. Clique no botão ao lado do índice desejado e selecione Delete Index.

4

Para excluir um índice do Atlas Search por meio de mongosh, use o método db.collection.dropSearchIndex().

O comando tem a seguinte sintaxe:

db.<collection>.dropSearchIndex("<index-name>")

O seguinte comando exclui um índice de pesquisa chamado default da coleção movies:

db.movies.dropSearchIndex("default")

Observação

O comando db.collection.dropSearchIndex() não retorna uma saída. Você pode utilizar a interface do usuário do Atlas para visualizar o status do índice.

Para excluir um índice do Atlas Search usando o MongoDB Compass:

1
2
3
4

Para usar o driver C para excluir seu índice do Atlas Search , passe sua coleção e o comando de descarte para o método mongoc_collection_command_simple() .

1
2

O aplicativo de exemplo a seguir especifica o comando dropSearchIndex e um nome de índice existente. Em seguida, o aplicativo converte o comando e as informações de índice para BSON e passa essas informações para o método mongoc_collection_command_simple() para excluir o índice de pesquisa.

#include <mongoc/mongoc.h>
#include <stdlib.h>
int main (void)
{
mongoc_client_t *client = NULL;
mongoc_collection_t *collection = NULL;
mongoc_database_t *database = NULL;
bson_error_t error;
bson_t cmd = BSON_INITIALIZER;
bool ok = true;
mongoc_init();
// Connect to your Atlas deployment
client = mongoc_client_new("<connectionString>");
if (!client) {
fprintf(stderr, "Failed to create a MongoDB client.\n");
ok = false;
goto cleanup;
}
// Access your database and collection
database = mongoc_client_get_database(client, "<databaseName>");
collection = mongoc_database_get_collection(database, "<collectionName>");
// Specify the command and the index name
const char *cmd_str =
BSON_STR ({"dropSearchIndex" : "<collectionName>", "name" : "<indexName>"});
// Convert your command to BSON
if (!bson_init_from_json(&cmd, cmd_str, -1, &error)) {
fprintf(stderr, "Failed to parse command: %s\n", error.message);
ok = false;
goto cleanup;
}
// Run the command to drop the search index
if (!mongoc_collection_command_simple (collection, &cmd, NULL, NULL, &error)) {
fprintf(stderr, "Failed to run dropSearchIndex: %s\n", error.message);
ok = false;
goto cleanup;
}
printf ("Index dropped!\n");
cleanup:
mongoc_collection_destroy(collection);
mongoc_database_destroy(database);
mongoc_client_destroy(client);
bson_destroy(&cmd);
mongoc_cleanup ();
return ok ? EXIT_SUCCESS : EXIT_FAILURE;
}
3
  • Sua connection string do Atlas. Para saber mais, consulte Conectar via Drivers.

  • O banco de dados e a coleção para os quais você deseja excluir um índice.

  • O nome do índice que você deseja excluir.

4
gcc -o delete-index delete-index.c $(pkg-config --libs --cflags libmongoc-1.0)
./delete-index

Para usar o driver C++ para excluir o índice do Atlas Search, chame o método drop_one() em uma visualização de índice de pesquisa.

1
2

O seguinte aplicativo de amostra usa o método search_indexes() na coleção de destino para instanciar uma exibição de índice de pesquisa. Em seguida, o aplicativo chama o método drop_one() na exibição e passa um nome de índice do Atlas Search como um parâmetro para excluir o índice.

#include <mongocxx/client.hpp>
#include <mongocxx/instance.hpp>
#include <mongocxx/search_index_view.hpp>
using namespace mongocxx;
int main()
{
mongocxx::instance instance{};
try
{
// Connect to your Atlas deployment
mongocxx::uri uri("<connectionString>");
mongocxx::client client(uri);
// Access your database and collection
auto db = client["<databaseName>"];
auto collection = db["<collectionName>"];
// Access the indexes in your collection
auto siv = collection.search_indexes();
// Delete your search index
auto name = "<indexName>";
siv.drop_one(name);
}
catch (const std::exception& e)
{
std::cout<< "Exception: " << e.what() << std::endl;
}
return 0;
}
3
  • Sua connection string do Atlas. Para saber mais, consulte Conectar via Drivers.

  • O banco de dados e a coleção para os quais você deseja obter os índices.

  • O nome do índice que você deseja excluir.

4
g++ -o delete-index delete-index.cpp $(pkg-config --cflags --libs libmongocxx)
./delete-index

Para usar o driver .NET/C# para excluir um índice do Atlas Search, use o método DropOne() ou DropOneAsync().

O seguinte aplicativo de exemplo exclui um índice de uma coleção. Especifique os seguintes valores:

  • Sua connection string do Atlas. Para saber mais, consulte Conectar via Drivers.

  • O banco de dados e a coleção que contêm o índice de pesquisa que você deseja excluir.

  • O nome do índice de pesquisa que você deseja excluir.

Program.cs
using MongoDB.Bson;
using MongoDB.Driver;
// connect to your Atlas deployment
var uri = "<connection-string>";
var client = new MongoClient(uri);
var db = client.GetDatabase("<databaseName>");
var collection = db.GetCollection<BsonDocument>("<collectionName>");
// drop your Atlas Search index
collection.SearchIndexes.DropOne("<index name>");

Para executar o aplicativo de amostra, crie um novo projeto de console .NET chamado csharp-delete-index e copie o exemplo de código anterior para o arquivo Program.cs. Em seguida, use o seguinte comando para executar o projeto:

dotnet run csharp-delete-index.csproj

Observação

O método DropOne() não retorna uma saída. Você pode utilizar a interface do usuário do Atlas para visualizar o status do índice.

Dica

Documentação da API

Para saber mais sobre os métodos desta página, consulte a documentação da API para o driver .NET/C#.

Para excluir um índice do Atlas Search em uma coleção usando o Java Driver, use o método dropSearchIndex(). Você deve ter o Java Driver v4.11.0 ou superior.

1
2

O seguinte aplicativo de amostra exclui o índice do Atlas Search especificado na coleção especificada.

1import com.mongodb.client.MongoClient;
2import com.mongodb.client.MongoClients;
3import com.mongodb.client.MongoCollection;
4import com.mongodb.client.MongoDatabase;
5import org.bson.Document;
6
7public class DeleteIndex {
8 public static void main(String[] args) {
9 // connect to your Atlas cluster
10 String uri = "<connection-string>";
11
12 try (MongoClient mongoClient = MongoClients.create(uri)) {
13 // set namespace
14 MongoDatabase database = mongoClient.getDatabase("<database-name>");
15 MongoCollection<Document> collection = database.getCollection("<collection>");
16 // delete the index
17 collection.dropSearchIndex("<index-name>");
18 }
19 }
20}
3
  • <connection-string> - Sua string de conexão do Atlas. Para saber mais, consulte Conectar via drivers.

    Observação

    Na sua string de conexão, não inclua a configuração writeConcern .

  • <database-name> - O nome do banco de dados que contém a coleção.

  • <collection-name> - O nome da collection para a qual você deseja recuperar o índice.

  • <index-name> - o nome do índice a ser excluído.

4
javac DeleteIndex.java
java DeleteIndex

Veja também:

Para excluir um índice do Atlas Search por meio do driver Node, use o método auxiliar dropSearchIndex .

Você pode usar o seguinte aplicativo de amostra chamado drop-index.js para excluir um índice na sua collection. Especifique os seguintes valores:

  • Sua connection string do Atlas. Para saber mais, consulte Conectar via Drivers.

  • O banco de dados e a coleção onde você criou o índice de pesquisa.

  • O nome do índice que você deseja excluir.

drop-index.js
// connect to your Atlas deployment
const uri = "<connection-string>";
const client = new MongoClient(uri);
async function run() {
try {
const database = client.db("<databaseName>");
const collection = database.collection("<collectionName>");
// run the helper method
await collection.dropSearchIndex("<index-name>");
} finally {
await client.close();
}
}
run().catch(console.dir);

Para executar o aplicativo de amostra, use o seguinte comando.

node drop-index.js

Observação

O método dropSearchIndex não retorna uma saída. Você pode utilizar a interface do usuário do Atlas para visualizar o status do índice.

Para usar o driver Python para excluir seu índice do Atlas Search , chame o método drop_search_index() na sua coleção.

1
2

O aplicativo de amostra a seguir passa um nome de índice do Atlas Search para o método drop_search_index() para excluir o índice.

from pymongo.mongo_client import MongoClient
def delete_index():
# Connect to your Atlas deployment
uri = "<connectionString>"
client = MongoClient(uri)
# Access your database and collection
database = client["<databaseName>"]
collection = database["<collectionName>"]
# Delete your search index
collection.drop_search_index("<indexName>")
3
  • Sua connection string do Atlas. Para saber mais, consulte Conectar via Drivers.

  • O banco de dados e a coleção para os quais você deseja excluir um índice.

  • O nome do índice que você deseja excluir.

4
python delete_index.py

O processo mongot armazena os campos indexados e o campo _id no disco, então você pode querer ajustar o tamanho do seu índice antes de construí-lo. Você pode estimar o tamanho do seu índice completo do Atlas Search criando um índice em um subconjunto da sua coleção e dimensionando o tamanho do índice de dados de amostra com base no tamanho total dos seus dados usando a seguinte fórmula:

estimated-index-size = ( subset-data-index-size / subset-data-size ) x total-collection-data-size

Por exemplo, se você quiser estimar o tamanho de um índice para a collection movies no banco de dados sample_mflix, execute as seguintes etapas em mongosh:

  1. Execute $sample para criar uma nova coleção chamada sample_data usando uma amostra aleatória dos seus dados:

    use sample_mflix
    db.movies.aggregate([
    { $sample: { size: 10 } },
    { $out: "sample_data" }
    ])
    [
    {
    _id: ObjectId('573a13bbf29313caabd53f9c'),
    plot: "Three years ago, in real-life, Hama Ali, a charismatic actor from Iraq famous locally for his performance as Iraq's version of Superman, met Ayca on a film-set. He and Ayca, a fiery actress...",
    genres: [ 'Drama', 'Romance', 'War' ],
    runtime: 93,
    cast: [
    'Ayèa Damgaci',
    'Hama Ali Kahn',
    'Cengiz Bozkurt',
    'Nesrin Cavadzade'
    ],
    num_mflix_comments: 1,
    poster: 'https://m.media-amazon.com/images/M/MV5BMjA1OTI1MjI4OV5BMl5BanBnXkFtZTgwODk1MTA2MDE@._V1_SY1000_SX677_AL_.jpg',
    title: 'Gitmek: My Marlon and Brando',
    fullplot: "Three years ago, in real-life, Hama Ali, a charismatic actor from Iraq famous locally for his performance as Iraq's version of Superman, met Ayca on a film-set. He and Ayca, a fiery actress from Turkey, had a passionate love affair before returning to their respective homes. From his Kurdish village, Hama Ali sends Ayca video love letters which he has filmed on his handycam. She watches them from her sofa in Istanbul, with her cat for company. The video love letters capture the hellish violence engulfing Iraq, the goats and uncles populating his rural area, and also his tender affection towards her. Feeling suffocated by her own city and angered by the indifference towards the war that surrounds her, Ayca decides to make the journey eastwards to Iraq to be reunited with her lover. GITMEK, a dramatic feature film, is based on the true story of Ayca's departure from Istanbul and her extraordinary journey to the Iraqi border. At a time when many people were fleeing from East to West in search of safety, Ayca makes the opposite journey, in search of love. She is helped by immigrant artists who live in the slums of Istanbul and the mothers of long distance truck drivers who she meets at various border towns. The journey takes her through breathtaking landscapes, strange encounters and terrifying times.",
    languages: [ 'English', 'Kurdish', 'Turkish' ],
    released: ISODate('2008-11-14T00:00:00.000Z'),
    directors: [ 'Huseyin Karabey' ],
    writers: [ 'Ayèa Damgaci', 'Huseyin Karabey' ],
    awards: { wins: 12, nominations: 4, text: '12 wins & 4 nominations.' },
    lastupdated: '2015-07-04 00:20:59.083000000',
    year: 2008,
    imdb: { rating: 6.6, votes: 628, id: 920460 },
    countries: [ 'Turkey' ],
    type: 'movie',
    tomatoes: {
    viewer: { rating: 3.7, numReviews: 181, meter: 79 },
    lastUpdated: ISODate('2015-07-16T18:10:38.000Z')
    }
    },
    {
    _id: ObjectId('573a139af29313caabcefb6a'),
    plot: '48 hours of intersecting lives and crimes in Los Angeles.',
    genres: [ 'Comedy', 'Crime', 'Drama' ],
    runtime: 104,
    rated: 'R',
    cast: [
    'Danny Aiello',
    'Greg Cruttwell',
    'Jeff Daniels',
    'Teri Hatcher'
    ],
    num_mflix_comments: 1,
    poster: 'https://m.media-amazon.com/images/M/MV5BZDI0ZmFmYTgtMTQ5OS00MTVmLTgwNWYtNzIyY2Y5NjYxNzgyXkEyXkFqcGdeQXVyNzc5MjA3OA@@._V1_SY1000_SX677_AL_.jpg',
    title: '2 Days in the Valley',
    fullplot: 'John Herzfeld deftly welds together a multitude of subplots-- a loser hitman and a cool assassin involved in an insurance scam; a washed-up director, turned suicidal, if only he had someone to care for his beloved dog; a snooty art dealer, wracked by kidney stones, cared for by his devoted assistant; a grungy deranged vice cop, now partnered with a fresh-faced rookie; and two beautiful and jealous women entangled in their deadly scheme--into a spoof of the crime thriller genre.',
    languages: [ 'English', 'Vietnamese' ],
    released: ISODate('1996-09-27T00:00:00.000Z'),
    directors: [ 'John Herzfeld' ],
    writers: [ 'John Herzfeld' ],
    awards: { wins: 0, nominations: 1, text: '1 nomination.' },
    lastupdated: '2015-09-11 00:42:22.520000000',
    year: 1996,
    imdb: { rating: 6.5, votes: 15019, id: 115438 },
    countries: [ 'USA' ],
    type: 'movie',
    tomatoes: {
    viewer: { rating: 3, numReviews: 14630, meter: 55 },
    dvd: ISODate('2001-08-07T00:00:00.000Z'),
    critic: { rating: 6, numReviews: 53, meter: 60 },
    lastUpdated: ISODate('2015-08-19T18:25:36.000Z'),
    consensus: 'A labyrinthine thriller with a host of memorable characters, 2 Days in the Valley is an uneven but intriguing thriller/black comedy.',
    rotten: 21,
    production: 'HBO Video',
    fresh: 32
    }
    },
    {
    _id: ObjectId('573a13bdf29313caabd5943e'),
    fullplot: "When Emily Parris exposes a secret society of teenage girls who have slipped out of the world of social media and into another world they've discovered in the woods at night. When she accuses the girls of committing sexually deviant activities, Emily sends the small American town into a atmosphere of hysteria and the national media spotlight. The mystery deepens when each of the accused girls upholds a vow of silence.",
    imdb: { rating: 6.2, votes: 861, id: 1015471 },
    year: 2014,
    plot: "When a teenage girl says she's the victim of a secret network called The Sisterhood of Night, a quiet suburban town becomes the backdrop for a modern-day Salem witch trial.",
    genres: [ 'Drama', 'Mystery', 'Thriller' ],
    rated: 'PG-13',
    metacritic: 60,
    title: 'The Sisterhood of Night',
    lastupdated: '2015-09-10 17:22:16.113000000',
    languages: [ 'English' ],
    writers: [ 'Marilyn Fu (screenplay)', 'Steven Millhauser (short story)' ],
    type: 'movie',
    tomatoes: {
    website: 'http://www.thesisterhoodofnight-movie.com/',
    viewer: { rating: 3.6, numReviews: 382, meter: 65 },
    dvd: ISODate('2015-06-09T00:00:00.000Z'),
    critic: { rating: 6.6, numReviews: 19, meter: 79 },
    boxOffice: '$5.3k',
    rotten: 4,
    production: 'Cine Mosaic',
    lastUpdated: ISODate('2015-09-13T17:24:37.000Z'),
    fresh: 15
    },
    poster: 'https://m.media-amazon.com/images/M/MV5BODg3MjE0MDM4N15BMl5BanBnXkFtZTgwOTY0MjE5NDE@._V1_SY1000_SX677_AL_.jpg',
    num_mflix_comments: 1,
    released: ISODate('2014-10-18T00:00:00.000Z'),
    awards: { wins: 2, nominations: 3, text: '2 wins & 3 nominations.' },
    countries: [ 'USA' ],
    cast: [
    'Georgie Henley',
    'Kara Hayward',
    'Willa Cuthrell',
    'Olivia DeJonge'
    ],
    directors: [ 'Caryn Waechter' ],
    runtime: 104
    },
    {
    _id: ObjectId('573a13c4f29313caabd6d7bf'),
    plot: 'A film producer struggles with suicidal despair.',
    genres: [ 'Drama' ],
    runtime: 110,
    metacritic: 76,
    cast: [
    'Louis-Do de Lencquesaing',
    'Chiara Caselli',
    'Alice de Lencquesaing',
    'Alice Gautier'
    ],
    num_mflix_comments: 0,
    poster: 'https://m.media-amazon.com/images/M/MV5BMTUxODczODA2NV5BMl5BanBnXkFtZTcwNzExMjQ1Mw@@._V1_SY1000_SX677_AL_.jpg',
    title: 'Father of My Children',
    fullplot: "In the first half, Gregoire, a movie producer of great charm, owner of Moon Films, plays with his younger daughters, talks with his wife and his eldest daughter, and keeps his studio going while one project hemorrhages money and creditors circle. In the second half, Sylvia, his Italian wife, tries to hold the family together as she looks fully into Moon Films' troubles. She meets with a banker, a temperamental Swede, Russian TV magnates, a film lab exec, and Moon's lawyer. Clèmence, the oldest daughter, goes on her own search. Debt can crush; how does a family pick up the pieces?",
    languages: [ 'French' ],
    released: ISODate('2009-12-16T00:00:00.000Z'),
    directors: [ 'Mia Hansen-Lève' ],
    writers: [ 'Mia Hansen-Lève (screenplay)' ],
    awards: { wins: 2, nominations: 3, text: '2 wins & 3 nominations.' },
    lastupdated: '2015-09-02 00:01:22.897000000',
    year: 2009,
    imdb: { rating: 6.7, votes: 1820, id: 1356928 },
    countries: [ 'France', 'Germany', 'Belgium' ],
    type: 'movie',
    tomatoes: {
    website: 'http://www.filmsdulosange.fr/fr/fr_peredemesenfants.html',
    viewer: { rating: 3.3, numReviews: 1232, meter: 60 },
    dvd: ISODate('2010-06-21T00:00:00.000Z'),
    critic: { rating: 7.4, numReviews: 55, meter: 91 },
    lastUpdated: ISODate('2015-09-11T18:38:12.000Z'),
    consensus: 'A tragedy gracefully lifted by tender empathy and moments of joy, Father of My Children is a quiet triumph for writer-director Mia Hansen-Love.',
    rotten: 5,
    production: 'IFC Films',
    fresh: 50
    }
    },
    {
    _id: ObjectId('573a13a5f29313caabd15cc1'),
    plot: 'After a 13-year imprisonment in Hong Kong, a kickboxer challenges the current champion in order to restore his honor.',
    genres: [ 'Drama', 'Romance', 'Sport' ],
    runtime: 105,
    cast: [
    'Andy Lau',
    'Takako Tokiwa',
    'Inthira Charoenpura',
    'Apichaya Thanatthanapong'
    ],
    title: 'Ah Fu',
    lastupdated: '2015-09-14 12:56:13.823000000',
    languages: [ 'Cantonese' ],
    released: ISODate('2000-11-21T00:00:00.000Z'),
    directors: [ 'Daniel Lee' ],
    writers: [ 'Chi-Sing Cheung', 'Daniel Lee' ],
    awards: { wins: 1, nominations: 3, text: '1 win & 3 nominations.' },
    year: 2000,
    imdb: { rating: 6.6, votes: 350, id: 277558 },
    countries: [ 'Hong Kong' ],
    type: 'movie',
    tomatoes: {
    viewer: { rating: 3.3, numReviews: 644, meter: 57 },
    lastUpdated: ISODate('2015-04-25T18:41:33.000Z')
    },
    num_mflix_comments: 0
    },
    {
    _id: ObjectId('573a13bef29313caabd5ce2b'),
    plot: 'Johann Sebastian Bach llega con su familia a Leipzig para ocupar el puesto de cantor en la Escuela de Santo Tomès...',
    genres: [ 'Musical' ],
    runtime: 102,
    metacritic: 70,
    cast: [
    'Christian Atanasiu',
    'Fèodor Atkine',
    'George-Christoph Biller',
    'Christian Brembeck'
    ],
    title: 'The Silence Before Bach',
    lastupdated: '2015-05-25 00:50:52.210000000',
    languages: [ 'Spanish', 'German', 'Catalan' ],
    released: ISODate('2007-12-21T00:00:00.000Z'),
    directors: [ 'Pere Portabella' ],
    writers: [ 'Xavier Albertè', 'Pere Portabella', 'Carles Santos' ],
    awards: { wins: 3, nominations: 3, text: '3 wins & 3 nominations.' },
    year: 2007,
    imdb: { rating: 6.8, votes: 329, id: 1079450 },
    countries: [ 'Spain' ],
    type: 'movie',
    tomatoes: {
    website: 'http://www.pereportabella.com/eng/fla/die/home_eng.html',
    viewer: { rating: 3.5, numReviews: 391, meter: 64 },
    critic: { rating: 6.6, numReviews: 16, meter: 81 },
    lastUpdated: ISODate('2015-08-11T19:15:49.000Z'),
    rotten: 3,
    production: 'Film Forum',
    fresh: 13
    },
    num_mflix_comments: 0
    },
    {
    _id: ObjectId('573a13ccf29313caabd83260'),
    plot: 'A woman subject to mental, physical, and sexual abuse on a remote island seeks a way out.',
    genres: [ 'Crime', 'Drama', 'Horror' ],
    runtime: 115,
    cast: [ 'Yeong-hie Seo', 'Seong-won Ji', 'Min-ho Hwang', 'Min Je' ],
    num_mflix_comments: 0,
    poster: 'https://m.media-amazon.com/images/M/MV5BMjAyNDEwMDgzMl5BMl5BanBnXkFtZTcwNzMyMTYwNQ@@._V1_SY1000_SX677_AL_.jpg',
    title: 'Bedevilled',
    fullplot: "Hae-won is a beautiful single woman in her thirties who works at a bank in the Seoul city. She leads a busy life until she becomes a witness to an attempted murder case, and at the same time, things get complicated at work. When things get out of hand she is forced to take a vacation so she heads for 'Moodo', a small undeveloped island, where she had once visited to see her grandparents. And where she had befriended a girl named Bok-nam who stills writes to Hae-won asking her to visit despite the fact that Hae-won never bothered to reply. Upon arriving at the island, Hae-won is shocked to see everyone treating Bok-nam like a slave. As practically the only young woman on the island, she is a plaything for all the men and a free laborer for the women. Sick of all the inhumane treatment, Bok-nam had tried to escape the island several times in the past but had failed each time. She begs Hae-won to help her escape the place, but Hae-won remains indifferent not wanting to be involved in complicated situations. When Bok-nam realizes that her own daughter will follow her footsteps, she tries to escape the island with her daughter.",
    languages: [ 'Korean' ],
    released: ISODate('2010-09-02T00:00:00.000Z'),
    directors: [ 'Cheol-soo Jang' ],
    writers: [ 'Kwang-young Choi' ],
    awards: { wins: 10, nominations: 5, text: '10 wins & 5 nominations.' },
    lastupdated: '2015-09-01 01:18:02.960000000',
    year: 2010,
    imdb: { rating: 7.3, votes: 7983, id: 1646959 },
    countries: [ 'South Korea' ],
    type: 'movie'
    },
    {
    _id: ObjectId('573a13c7f29313caabd746fe'),
    plot: 'A Californian family inherits a castle in Romania. This is especially exciting to the son, who is obsessed with monsters. And he is not disappointed.',
    genres: [ 'Comedy', 'Family' ],
    runtime: 83,
    rated: 'TV-G',
    cast: [
    'Victoria Justice',
    'Chase Ellison',
    'Anna Galvin',
    'Matt Winston'
    ],
    num_mflix_comments: 0,
    poster: 'https://m.media-amazon.com/images/M/MV5BMjU1MmJlMTctY2FiMC00MmU1LWI5NmYtMDc5OWM0NjEzMmI2XkEyXkFqcGdeQXVyNDgyODgxNjE@._V1_SY1000_SX677_AL_.jpg',
    title: 'The Boy Who Cried Werewolf',
    fullplot: 'A Californian family inherits a castle in Romania. This is especially exciting to the son, who is obsessed with monsters. And he is not disappointed.',
    languages: [ 'English' ],
    released: ISODate('2010-10-22T00:00:00.000Z'),
    directors: [ 'Eric Bross' ],
    writers: [ 'Art Edler Brown', 'Douglas Sloan' ],
    awards: { wins: 1, nominations: 2, text: '1 win & 2 nominations.' },
    lastupdated: '2015-08-20 00:01:59.673000000',
    year: 2010,
    imdb: { rating: 6.3, votes: 1582, id: 1451423 },
    countries: [ 'USA', 'Canada' ],
    type: 'movie',
    tomatoes: {
    viewer: { rating: 3.7, numReviews: 762, meter: 66 },
    lastUpdated: ISODate('2015-09-12T17:30:20.000Z')
    }
    },
    {
    _id: ObjectId('573a13b4f29313caabd3f473'),
    genres: [ 'Documentary' ],
    runtime: 85,
    title: 'Zero Degrees of Separation',
    countries: [ 'Canada' ],
    lastupdated: '2015-08-09 00:30:38.977000000',
    languages: [ 'Arabic', 'English', 'Hebrew' ],
    released: ISODate('2005-06-22T00:00:00.000Z'),
    directors: [ 'Elle Flanders' ],
    writers: [ 'Elle Flanders' ],
    awards: { wins: 1, nominations: 0, text: '1 win.' },
    year: 2005,
    imdb: { rating: 6.6, votes: 90, id: 454990 },
    type: 'movie',
    tomatoes: {
    viewer: { rating: 3.5, numReviews: 5, meter: 100 },
    fresh: 1,
    critic: { numReviews: 2 },
    rotten: 1,
    lastUpdated: ISODate('2015-01-04T23:25:58.000Z')
    },
    num_mflix_comments: 0
    },
    {
    _id: ObjectId('573a13bff29313caabd5f070'),
    plot: 'This hilarious genre-bending comedy follows Gary Brewer, along with girlfriend Holly Brewer (no relation), and best friend Trevor Morehouse as Gary quests to reign supreme at the 2006 Rock, Paper, Scissors World Championships.',
    genres: [ 'Comedy' ],
    runtime: 85,
    cast: [ 'Tim Doiron', 'April Mullen', 'Ryan Tilley', 'Peter Pasyk' ],
    num_mflix_comments: 0,
    poster: 'https://m.media-amazon.com/images/M/MV5BMTI5MzIwMjA2Ml5BMl5BanBnXkFtZTcwOTcyOTA4MQ@@._V1_SY1000_SX677_AL_.jpg',
    title: 'Rock, Paper, Scissors: The Way of the Tosser',
    fullplot: 'This hilarious genre-bending comedy follows Gary Brewer, along with girlfriend Holly Brewer (no relation), and best friend Trevor Morehouse as Gary quests to reign supreme at the 2006 Rock, Paper, Scissors World Championships.',
    languages: [ 'English' ],
    released: ISODate('2007-07-06T00:00:00.000Z'),
    directors: [ 'Tim Doiron', 'April Mullen' ],
    writers: [ 'Tim Doiron (creator)', 'April Mullen (creator)', 'Tim Doiron' ],
    awards: { wins: 2, nominations: 0, text: '2 wins.' },
    lastupdated: '2015-08-12 00:01:33.813000000',
    year: 2007,
    imdb: { rating: 6.2, votes: 316, id: 1121964 },
    countries: [ 'Canada' ],
    type: 'movie'
    }
    ]
  2. Crie um índice de pesquisa na collection com os dados de amostra usando a definição de índice que você deseja usar para a collection completa:

    db.sample_data.createSearchIndex(
    "sample-index",
    { mappings: { dynamic: true } }
    )
    sample-index
  3. Dimensione o tamanho dos dados de amostra pelo tamanho total da collection. Por exemplo, se o tamanho do índice sample-index for 44.88, de acordo com a página Visão Geral do Índice da UI do Atlas, então você poderá usar os seguintes comandos para calcular o tamanho total do índice:

    let sampleSize = db.sample_data.totalSize()
    let totalSize = db.movies.totalSize()
    let totalIndexSize = ( 44.88 / sampleSize ) * totalSize; totalIndexSize
    45864.28

Para saber como definir um índice do Atlas Search para atender às suas necessidades de query do Atlas Search, consulte Definir sua query.

Para aprender como criar um índice do Atlas Search, consulte Criar um índice do Atlas Search.

Para saber mais sobre as configurações de índice do Atlas Search descritas neste tutorial, consulte as seguintes páginas de referência:

Para obter experiência prática na criação de índices do Atlas Search para os conjuntos de dados de exemplo e na execução de queries do Atlas Search nos dados indexados, experimente o Atlas Search Quick Start.

Acompanhe este tutorial em vídeo que demonstra como criar índices de Atlas Search de várias complexidades.

Duração: 15 Minutos