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

Editar um índice de pesquisa do Atlas

Nesta página

  • Acesso necessário
  • 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.

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.

Project Data Access Admin ou role superior

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.

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ê pode usar o mongosh comando ou os métodos assistente do driver para editar índices do Atlas Search em todas as camadas do Atlas cluster. Para obter uma lista de versões de driver compatíveis, consulte Drivers do MongoDB .

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:

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": "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.

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.

Dica

Veja: links relacionados

1
  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.

  2. No menu suspenso Select data source, selecione seu 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:

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 ("lucene.standard").

Corresponde à configuração JSON do analyzer.

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:

  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. Para desabilitar o mapeamento dinâmico, configure "dynamic": para Off. 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 Revisar a sintaxe do índice do Atlas Search.

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.

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:

  1. Clique em Add Field 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 Configuration - Tipo de dados do campo. Para saber mais sobre os tipos de dados aceitos e suas opções, consulte Tipos de dados.

    • Enable Dynamic Mapping - Mapeamento estático ou dinâmico a ser usado para campos de tipos document e embeddedDocument. Se você desabilitar o mapeamento dinâmico, os dados no campo não serão indexados automaticamente.

  3. Clique em Add para adicionar o campo.

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

    • Modifique as configurações do campo clicando em Edit.

    • Configure os tipos de dados adicionais para o campo clicando em Add Data Type.

    • Remova o campo do índice clicando em Delete.

Você pode definir campos na definição do índice do Atlas Search em qualquer ordem.

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

Condicional

Stored Source Fields

Especifique os campos para armazenar no Atlas Search. Você pode escolher uma das seguintes opções:

  • None - (Padrão) Se selecionado, o Atlas Search não armazena nenhum campo.

  • All - Se selecionado, o Atlas Search armazena todos os campos nos documentos.

  • Specified - Se selecionado, o Atlas Search armazena _id e os campos que você especificar. Você pode especificar os campos fazendo o seguinte:

    1. Selecione o campo para armazenar no Atlas Search a partir do menu suspenso na coluna Field Name.

    2. Clique em Add para adicionar o campo à lista de campos para armazenar.

    3. Clique em Add Field e repita as etapas a e b para cada campo que será adicionado à lista.

    4. (Opcional) Clique em uma das seguintes opções:

      • Edit para selecionar um campo diferente.

      • Delete para remover o campo da lista de campos a serem armazenados.

  • All Except Specified - Se selecionado, o Atlas Search exclui campos específicos do armazenamento no Atlas Search.

    1. Selecione o campo a ser excluído na lista suspensa da coluna Field Name.

    2. Clique em Add para adicionar o campo à lista de campos a serem excluídos.

    3. Clique em Add Field e repita as etapas a e b para cada campo a ser excluído da lista.

    4. (Opcional) Clique em uma das seguintes opções:

      • Edit para selecionar um campo diferente.

      • Delete para remover o campo da lista de campos a serem excluídos.

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. 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:

  • Synonym mapping name - Rótulo que identifica o mapeamento de sinônimos a ser consultado no momento da query. Você deve especificar um valor único. Não é possível especificar um valor de string vazio.

  • Synonym source collection - Rótulo que identifica a coleção do MongoDB no mesmo banco de dados que o índice Atlas Search. Os documentos nesta coleção usam o formato descrito em Documentos da coleção de fonte de sinônimos. Você também pode adicionar uma coleção vazia ou carregar uma coleção de amostras.

  • Analyzer - Rótulo que identifica o analisador a ser usado com este mapeamento de sinônimos.

    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 ("lucene.standard").

    Você pode especificar qualquer analisador do Atlas Search exceto o seguinte:

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.

Importante

A numPartitions opção está disponível como um recurso de visualização.

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 desabilitar o mapeamento dinâmico, configure "dynamic": para 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 Revisar a sintaxe do índice do Atlas Search.

Obrigatório

Revise as seguintes configurações avançadas:

Nome do campo
Descrição
necessidade

mappings.fields

Obrigatório se mappings.dynamic for false.

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

storedSource

Especifique os campos nos documentos para armazenar no Atlas Search. O valor pode ser um dos seguintes:

  • true, para armazenar todos os campos

  • false, para não armazenar nenhum campo

  • Objeto que especifica os campos de include ou exclude a partir do armazenamento

Se omitido, o padrão é false.

storedSource está disponível apenas em clusters Atlas que executam uma das seguintes versões:

  • MongoDB 5.0.6+

  • MongoDB 6.0+

  • MongoDB 7.0+

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

synonyms

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 ("lucene.standard").

Opcional

numPartitions

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.

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 Revisar a sintaxe do índice do Atlas Search.

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 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
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
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 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.

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 usar a interface do Atlas para visualizar o status do índice.

Dica

Documentação da API

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 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.

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.

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 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.

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
4
python edit-index.py

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.

Voltar

Vista