Visão geral
Neste guia, você pode aprender como criar e gerenciar índices de pesquisa MongoDB. Esses índices permitem usar os recursos do MongoDB Search para realizar pesquisas rápidas de texto completo em dados armazenados em um cluster Atlas. Um índice de pesquisa do MongoDB configura o comportamento da pesquisa do MongoDB especificando quais campos indexar, como esses campos são indexados e outras configurações opcionais. Para saber mais sobre os índices de pesquisa do MongoDB, consulte documentação de pesquisa do MongoDB.
This guide explains how to perform the following actions to manage your MongoDB Search indexes:
Observação
Os exemplos neste guia acessam a coleção posts no banco de dados sample_training , que é um dos conjuntos de dados de amostra do Atlas. Para obter instruções sobre como importar os dados de amostra do Atlas, consulte Carregar dados de amostra na documentação do Atlas.
Crie um modelo de índice de pesquisa
Para criar um índice de pesquisa MongoDB, você deve primeiro criar uma instância do SearchIndexModel que define suas especificações de índice. Para começar a construir uma instância do SearchIndexModel, chame o método SearchIndexModel::builder().
Observação
Instanciação de modelos
O driver Rust implementa o padrão de design Builder para a criação de muitos tipos diferentes, incluindo SearchIndexModel . Você pode utilizar o método builder() para construir uma instância de cada tipo encadeando métodos de construtor de opção.
O driver Rust fornece os seguintes métodos de construtor SearchIndexModel :
definition(), que aceita um parâmetro de documento BSON e define sua definição de índicename(), que aceita um parâmetro de string e define o nome do índice
O documento BSON que você passa para o método construtor definition() deve incluir o campo mappings . Para indexar automaticamente todos os campos suportados na sua collection, habilite mapeamentos dinâmicos configurando o campo aninhado mappings.dynamic como true. Para indexar somente campos especificados, habilite mapeamentos estáticos configurando o campo aninhado mappings.dynamic para false e incluindo uma lista de campos que você deseja indexar.
Dica
MongoDB Search Field Mappings
Para saber mais sobre mapeamentos de campo do MongoDB pesquisa, veja Definir mapeamentos de campo na documentação do Atlas.
Exemplo
O exemplo a seguir cria especificações para um índice denominado example_index em uma instância SearchIndexModel . O código define um mapeamento estático para indexar somente os campos body e date :
let def = doc! { "mappings": doc! { "dynamic": false, "fields": { "body": {"type": "string"}, "date": {"type": "date"} } }}; let idx_model = SearchIndexModel::builder() .definition(def) .name("example_index".to_string()) .build();
Criar um índice de pesquisa
Você pode criar um índice de pesquisa em uma coleção chamando o método create_search_index() em uma instância Collection. Este método aceita os seguintes parâmetros:
Modelo de índice, especificado em uma instância do
SearchIndexModelOpções de índice, especificadas em uma instância CreateSearchIndexOptions
Exemplo
O exemplo a seguir cria um índice de pesquisa MongoDB na coleção posts. O código cria um SearchIndexModel que define o nome do índice e habilita o mapeamento dinâmico. Em seguida, o código passa a instância SearchIndexModel para o método create_search_index() para criar o índice de pesquisa MongoDB :
let idx_model = SearchIndexModel::builder() .definition(doc! { "mappings": doc! {"dynamic": true} }) .name("example_index".to_string()) .build(); let result = my_coll.create_search_index(idx_model, None).await?; println!("Created MongoDB Search index:\n{}", result);
Created MongoDB Search index: "example_index"
Criar múltiplos índices de pesquisa
Você pode criar vários índices de pesquisa do MongoDB de uma só vez, chamando o método create_search_indexes() em uma instância Collection. Este método aceita os seguintes parâmetros:
Lista de modelos de índice, especificada como um vetor de
SearchIndexModelinstânciasOpções de índice, especificadas em uma instância
CreateSearchIndexOptions
Exemplo
O exemplo a seguir cria dois índices de pesquisa MongoDB denominados dynamic_index e static_index na coleção posts. O código cria instâncias do SearchIndexModel para cada índice que especifica os nomes e definições do índice. Em seguida, o código passa esses modelos como um vetor para o método create_search_indexes() e cria os índices:
let dyn_idx = SearchIndexModel::builder() .definition(doc! { "mappings": doc! {"dynamic": true} }) .name("dynamic_index".to_string()) .build(); let static_idx = SearchIndexModel::builder() .definition(doc! {"mappings": doc! { "dynamic": false, "fields": { "title": {"type": "string"}}}}) .name("static_index".to_string()) .build(); let models = vec![dyn_idx, static_idx]; let result = my_coll.create_search_indexes(models, None).await?; println!("Created MongoDB Search indexes:\n{:?}", result);
Created MongoDB Search indexes: ["dynamic_index", "static_index"]
Listar índices de pesquisa
Você pode acessar informações sobre os índices de pesquisa existentes em uma coleção chamando o método list_search_indexes() na coleção. Este método aceita os seguintes parâmetros:
Nome do índice para recuperar informações sobre
Opções de aggregation, especificadas em uma instância AggregateOptions
Opções de índice, especificadas em uma instância ListSearchIndexOptions
Exemplo
O exemplo a seguir acessa informações sobre os índices de pesquisa do MongoDB Search criados na Criar vários índices de pesquisa desta página. O código chama o método list_search_indexes() e passa um valor de None para cada parâmetro, que instrui o driver a retornar informações sobre todos os índices de pesquisa do MongoDB Search com opções padrão. Em seguida, o código gera os índices de pesquisa:
let mut cursor = my_coll.list_search_indexes(None, None, None).await?; while let Some(index) = cursor.try_next().await? { println!("{}\n", index); }
{ "id": "...", "name": "dynamic_index", "status": "READY", "queryable": true, "latestDefinitionVersion": {...}, "latestDefinition": { "mappings": { "dynamic": true } }, "statusDetail": [...] } { "id": "...", "name": "static_index", "status": "READY", "queryable": true, "latestDefinitionVersion": {...}, "latestDefinition": { "mappings": { "dynamic": false, "fields": { "title": { "type": "string" } } } }, "statusDetail": [...] }
Dica
Para saber mais sobre como iterar por meio de um cursor, consulte o guia Acessar dados usando um cursor.
Atualizar um Índice de Pesquisa
Você pode atualizar um índice de pesquisa chamando o método update_search_index() em uma instância Collection. Este método aceita os seguintes parâmetros:
Nome do índice a ser atualizado
Documento de definição de índice modificado
Opções de índice, especificadas em uma instância UpdateSearchIndexOptions
Exemplo
O exemplo a seguir atualiza o índice de pesquisa do MongoDB Search denominado static_index criado na seção Criar vários índices de pesquisa desta página. O código cria um novo documento de definição de índice que instrui o índice a usar mapeamentos dinâmicos em vez de mapeamentos estáticos. Em seguida, o código chama o método update_search_index() para atualizar o índice:
let name = "static_index"; let definition = doc! { "mappings": doc! {"dynamic": true} }; my_coll.update_search_index(name, definition, None).await?;
Excluir um índice de pesquisa
Você pode excluir um índice de pesquisa do MongoDB chamando o método delete_search_index() em uma instância Collection. Este método aceita os seguintes parâmetros:
Nome do índice a ser excluído
Opções de índice, especificadas em uma instância DropSearchIndexOptions
Exemplo
O exemplo seguinte excluir o índice de pesquisa do MongoDB denominado example_index criado na seção Criar um Índice de Pesquisa desta página. O código passa o nome do índice para o método delete_search_index() para excluir o índice:
let name = "example_index"; my_coll.drop_search_index(name, None).await?;
Informações adicionais
Para saber mais sobre outros índices que você pode criar usando o driver Rust, consulte o guia Índices .
Para aprender mais sobre a pesquisa MongoDB, consulte a seguinte documentação do Atlas:
Documentação da API
Para saber mais sobre os métodos e tipos mencionados neste guia, consulte a documentação da API abaixo: