Editar um índice de pesquisa do Atlas
Você pode alterar adefinição de índice de um índice do Atlas Search existente. Não é possível renomear um índice; se precisar alterar o nome de um índice, você deverá criar um novo índice e excluir o antigo.
Acesso necessário
A tabela a seguir mostra os modos de acesso que cada papel suporta.
Função | em ação | IU do Atlas | Atlas API | API de pesquisa do Atlas | Atlas CLI |
---|---|---|---|---|---|
| Para visualizar analisadores e índices do Atlas Search. | ✓ | ✓ | ||
| Para criar e gerenciar analisadores e índices do Atlas Search e atribuir a função à sua chave de API. | ✓ | ✓ | ✓ | ✓ |
| ✓ | ✓ | |||
| Para criar entradas de lista de acesso para sua Chave de API e enviar a solicitação de um cliente que aparece na lista de acesso para sua Chave de API. | ✓ | ✓ | ||
Para criar, visualizar, editar e excluir índices do Atlas Search usando a UI ou API do Atlas. | ✓ | ✓ | ✓ |
Editar um índice de pesquisa do Atlas
Você pode editar um índice do Atlas Search na UI do Atlas ou programaticamente usando o mongosh
, o Atlas CLI, aAPI ou um driver MongoDB compatível em seu idioma preferido.
Observação
Você deve ter pelo menos o papel do atlasAdmin
ou acesso do dbAdmin
ao banco de dados que contém os índices. Para saber mais, consulte Funções embutidas ou Privilégios específicos.
➤ Use o menu suspenso Selecione a linguagem para definir a linguagem do exemplo nesta seção.
Para editar um índice do Atlas Search usando a API:
Envie uma solicitação PATCH
.
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": "lucene.<analyzer>", "storedSource": { "include | exclude": [...] }, "synonyms": [ { "analyzer": "lucene.<analyzer>", "name": "string", "source": { "collection": "string" } } ] } }'
Para saber mais sobre a sintaxe e os parâmetros de um dos endpoints, consulte Atualizar um por nome e Atualizar um por ID.
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.
No Atlas, VáGo para a Clusters página do seu projeto.
Se ainda não tiver sido exibido, selecione a organização que contém seu projeto no menu Organizations na barra de navegação.
Se ainda não estiver exibido, selecione o projeto desejado no menu Projects na barra de navegação.
Se ainda não estiver exibido, clique em Clusters na barra lateral.
A página Clusters é exibida.
Acesse a página do Atlas Search do seu cluster.
Você pode acessar a página do Atlas Search pela barra lateral, pelo Data Explorer ou pela página de detalhes do cluster.
Na barra lateral, clique em Atlas Search sob o título Services.
No menu suspenso Select data source, selecione seu cluster e clique em Go to Atlas Search.
A página Atlas Search é exibida.
Clique no botão Browse Collections para o seu cluster.
Expanda o banco de dados e selecione a coleção.
Clique na guia Search Indexes da coleção.
A página Atlas Search é exibida.
Clique no nome do seu cluster.
Clique na aba Atlas Search.
A página Atlas Search é exibida.
Revise as definições de configuração atuais e edite-as conforme necessário.
Revise as seguintes configurações de índice:
Nome do campo | 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 ( Corresponde à configuração JSON do | Opcional |
Query 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:
Corresponde à configuração JSON do | Opcional |
Dynamic Mapping | Especifique o mapeamento dinâmico ou estático dos campos. Para desabilitar o mapeamento dinâmico, configure Corresponde à configuração JSON do | 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. A definição de seus próprios mapeamentos de campo é recomendada apenas para usuários avançados. Especifique os campos no índice. Para adicionar os campos, você precisa fazer o seguinte:
Você pode definir campos na definição do índice do Atlas Search em qualquer ordem. Corresponde à configuração JSON do | Condicional |
Stored Source Fields | Especifique os campos para armazenar no Atlas Search. Você pode escolher uma das seguintes opções:
Para saber mais sobre como armazenar campos, consulte Definir campos de origem armazenados em seu índice do Atlas Search. Corresponde à configuração JSON do | Opcional |
Synonyms Mappings | Especifique mapeamentos de sinônimos para usar em seu índice. Para saber mais, consulte Definir mapeamentos de sinônimos no índice do Atlas Search. Para adicionar mapeamentos de sinônimos, você deve especificar as seguintes configurações para cada sinônimo:
Corresponde à configuração JSON do | 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 ImportanteA | Opcional. |
Revise as seguintes configurações de índice:
Nome do campo | Descrição | necessidade |
---|---|---|
| Especifique o analisador a ser usado para indexar os dados da coleção Por padrão, o Atlas Search utiliza o analisador padrão ( | Opcional |
| 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: | Opcional |
| Especifique o mapeamento dinâmico ou estático dos campos. Para desabilitar o mapeamento dinâmico, configure | Obrigatório |
Revise as seguintes configurações avançadas:
Nome do campo | Descrição | necessidade |
---|---|---|
| Obrigatório se A definição de seus próprios mapeamentos de campo é recomendada apenas para usuários avançados. Especifique os campos que você deseja indexar. Para saber mais, consulte Definir mapeamentos de campo. Você pode definir campos na definição do índice do Atlas Search em qualquer ordem. | Condicional |
| Especifique os campos nos documentos para armazenar no Atlas Search. O valor pode ser um dos seguintes:
Se omitido, o padrão é
Você pode armazenar campos de todos os tipos de dados suportados no Atlas Search. Para saber mais sobre a sintaxe e campos, consulte Definir campos de origem armazenados no seu índice do Atlas Search. | Opcional |
| Especifique mapeamentos de sinônimos para usar em seu índice. Para saber mais, consulte Definir mapeamentos de sinônimos no índice do Atlas Search. Você pode utilizar um mapeamento de sinônimo para fazer uma query somente em campos analisados com o mesmo analisador. Por padrão, o Atlas Search utiliza o analisador padrão ( | Opcional |
| O número de partições a serem usadas se os objetos de campo excederem 2.1 bilhões. .. include:: /includes/fact-numpartitions-preview.rst | Opcional. |
Para saber mais sobre essas configurações de definição de índice, consulte Revisar a sintaxe de índice do Atlas Search.
Clique em Save para aplicar as alterações.
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 Revisar a sintaxe do índice do Atlas Search.
db.<collection>.updateSearchIndex( "<index-name>", /* updated search index definition */ )
Exemplo
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 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()
.
Exemplo
Copie o seguinte exemplo de código no arquivo.
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.
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; }
Especifique os seguintes valores e salve o arquivo.
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 Revisar a sintaxe de índice do Atlas Search.
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.
Exemplo
Copie o seguinte exemplo de código no arquivo.
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.
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; }
Especifique os seguintes valores e salve o arquivo.
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 Revisar a sintaxe de índice do Atlas Search.
Para usar o driver .NET/C# para editar um índice do Atlas Search, use o método Update()
ou UpdateAsync()
.
Exemplo
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 usar mapeamentos estáticos. Você pode alterar essa definição para atender às suas necessidades específicas de indexação. Para saber mais, consulte Revisar a sintaxe de índice do Atlas Search.
O nome do índice que você deseja atualizar.
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 usar a interface 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.
Copie o seguinte exemplo de código no arquivo.
1 import com.mongodb.client.MongoClient; 2 import com.mongodb.client.MongoClients; 3 import com.mongodb.client.MongoCollection; 4 import com.mongodb.client.MongoDatabase; 5 import org.bson.Document; 6 7 public 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 }
Substitua os seguintes valores no código e salve o arquivo.
<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.
Compile e execute o arquivo.
javac EditIndex.java java EditIndex
O método updateSearchIndex()
é executado de maneira assíncrona. Use o método listSearchIndexes()
para determinar se as alterações foram aplicadas ao índice. Para saber mais sobre como recuperar índices do Atlas Search, consulte Procedimento.
Para editar um índice do Atlas Search pelo driver Node, use o método de assistente updateSearchIndex
.
Exemplo
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 usar mapeamentos estáticos. Você pode alterar essa definição para atender às suas necessidades específicas de indexação. Para saber mais, consulte Revisar a sintaxe de índice do Atlas Search.
O nome do índice que você deseja atualizar.
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 usar a interface 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.
Exemplo
Copie o seguinte exemplo de código no arquivo.
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)
Especifique os seguintes valores e salve o arquivo.
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 Revisar a sintaxe de índice do Atlas Search.
Observação
Enquanto seu novo índice está sendo criado, nós diferentes podem ser atualizados em velocidades diferentes. Durante esse período, você poderá ter 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á servindo queries na página de detalhes do status do índice.