Join us Sept 17 at .local NYC! Use code WEB50 to save 50% on tickets. Learn more >
MongoDB Event
Menu Docs
Página inicial do Docs
/ / /
Driver Rust
/ /

Índices de pesquisa do Atlas

Neste guia, você pode aprender como criar e gerenciar índices de Atlas Search. Esses índices permitem que você use o recurso Atlas Search do MongoDB para realizar pesquisas rápidas de texto completo em dados armazenados em um Atlas cluster. Um índice do Atlas Search configura o comportamento do Atlas Search especificando quais campos indexar, como esses campos são indexados e outras configurações opcionais. Para saber mais sobre os índices do Atlas Search, consulte a documentação do Atlas Search .

Este guia explica como executar as seguintes ação para managed seus índice de pesquisa do Atlas Search:

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.

Para criar um Atlas Search, você deve primeiro construir uma instância do SearchIndexModel que define seu índice de pesquisa. 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 índice

  • name(), 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

Mapeamentos de campo do Atlas Search

Para saber mais sobre mapeamentos de campo do Atlas Search, consulte Definir mapeamentos de campo na documentação do Atlas.

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();

Você pode criar um Atlas Search index em uma collection chamando o método create_search_index() em uma instância Collection . Este método aceita os seguintes parâmetros:

O exemplo a seguir cria um índice de pesquisa do Atlas Search na collection 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 do Atlas Search:

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 Atlas Search index:\n{}", result);
Created Atlas Search index:
"example_index"

Você pode criar múltiplos índice de pesquisa do Atlas Search 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 SearchIndexModel instâncias

  • Opções de índice, especificadas em uma instância CreateSearchIndexOptions

O exemplo a seguir cria dois índice de pesquisa do Atlas Search denominados dynamic_index e static_index na collection posts . O código cria SearchIndexModel instâncias 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 Atlas Search indexes:\n{:?}", result);
Created Atlas Search indexes:
["dynamic_index", "static_index"]

Você pode acessar informações sobre o índice de pesquisa existente do Atlas Search de uma collection ligando para o método list_search_indexes() na collection. Este método aceita os seguintes parâmetros:

O exemplo seguinte acessa informações sobre os índices de Atlas Search criados na seção Criar múltiplos índices de Atlas Search 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 do Atlas Search com opções padrão. Em seguida, o código gera os índices do Atlas Search :

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.

Você pode atualizar um índice de pesquisa do Atlas Search chamando o método update_search_index() em uma Collection . Este método aceita os seguintes parâmetros:

O exemplo a seguir atualiza o índice do Atlas 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?;

Você pode excluir um índice de pesquisa do Atlas Search chamando o método delete_search_index() em uma instância Collection . Este método aceita os seguintes parâmetros:

O exemplo seguinte exclui o índice do Atlas Search denominado example_index criado na seção Criar um Índice do Atlas Search 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?;

Para saber mais sobre outros índices que você pode criar usando o driver Rust, consulte o guia Índices .

Para saber mais sobre o Atlas Search, consulte a seguinte documentação do Atlas:

Para saber mais sobre os métodos e tipos mencionados neste guia, consulte a documentação da API abaixo:

Voltar

Indexes

Nesta página