Docs Menu
Docs Home
/ /

Índices de búsqueda de MongoDB

En esta guía, aprenderá a crear y administrar índices de MongoDB Search. Estos índices le permiten usar las funciones de MongoDB Search para realizar búsquedas rápidas de texto completo en los datos almacenados en un clúster de Atlas. Un índice de MongoDB Search configura el comportamiento de MongoDB Search especificando qué campos indexar, cómo se indexan y otras opciones. Para obtener más información sobre los índices de MongoDB Search, consulte Documentación de búsqueda de MongoDB.

Esta guía explica cómo realizar las siguientes acciones para administrar sus índices de búsqueda de MongoDB:

Nota

Los ejemplos de esta guía dan acceso a la posts Colección en la sample_training base de datos, que es uno de los conjuntos de datos de muestra de Atlas. Para obtener instrucciones sobre cómo importar los datos de muestra de Atlas, consulte "Cargar datos de muestra" en la documentación de Atlas.

Para crear un índice de búsqueda de MongoDB, primero debe crear una instancia SearchIndexModel que defina las especificaciones del índice. Para empezar a crear una instancia SearchIndexModel, llame al método SearchIndexModel::builder().

Nota

Instancia de modelos

El controlador de Rust implementa el patrón de diseño Builder para la creación de diversos tipos, incluido SearchIndexModel. Puedes usar el método builder() para construir una instancia de cada tipo encadenando los métodos del constructor de opciones.

El controlador Rust proporciona los siguientes métodos de construcción SearchIndexModel:

  • definition(), que acepta un parámetro de documento BSON y establece su definición de índice

  • name(), que acepta un parámetro de cadena y establece el nombre de su índice

El documento BSON que pase al método de compilación definition() debe incluir el campo mappings. Para indexar automáticamente todos los campos compatibles en su colección, habilite las asignaciones dinámicas estableciendo el campo anidado mappings.dynamic en true. Para indexar solo los campos especificados, habilite las asignaciones estáticas estableciendo el campo anidado mappings.dynamic en false e incluyendo una lista de los campos que desea indexar.

Tip

Asignaciones de campos de búsqueda de MongoDB

Para obtener más información sobre las asignaciones de campos de búsqueda de MongoDB, consulte Definir asignaciones de campos en la documentación de Atlas.

El siguiente ejemplo crea especificaciones para un índice llamado example_index en una instancia SearchIndexModel. El código establece una asignación estática para indexar únicamente los campos body y 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();

Puede crear un índice de búsqueda de MongoDB en una colección llamando al método create_search_index() en una instancia Collection. Este método acepta los siguientes parámetros:

El siguiente ejemplo crea un índice de búsqueda de MongoDB en la colección posts. El código crea un SearchIndexModel que define el nombre del índice y habilita la asignación dinámica. A continuación, el código pasa la instancia SearchIndexModel al método create_search_index() para crear el índice de búsqueda de 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"

Puedes crear varios índices de búsqueda de MongoDB a la vez llamando al método create_search_indexes() en una instancia Collection. Este método acepta los siguientes parámetros:

  • Lista de modelos de índice, especificados como un vector de SearchIndexModel instancias

  • Opciones de índice, especificadas en una instancia CreateSearchIndexOptions

El siguiente ejemplo crea dos índices de búsqueda de MongoDB llamados dynamic_index y static_index en la colección posts. El código crea SearchIndexModel instancias para cada índice que especifican sus nombres y definiciones. A continuación, el código pasa estos modelos como un vector al método create_search_indexes() y crea los í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"]

Puede acceder a la información sobre los índices de búsqueda de MongoDB existentes de una colección llamando al método list_search_indexes() de la colección. Este método acepta los siguientes parámetros:

  • Nombre del índice sobre el que se desea recuperar información

  • Opciones de agregación, especificadas en una instancia de AggregateOptions

  • Opciones de índice, especificadas en una instancia de ListSearchIndexOptions

El siguiente ejemplo accede a información sobre los índices de búsqueda de MongoDB creados en la sección "Crear varios índices de búsqueda" de esta página. El código llama al list_search_indexes() método y pasa un valor de None para cada parámetro, lo que indica al controlador que devuelva información sobre todos los índices de búsqueda de MongoDB con las opciones predeterminadas. A continuación, el código genera los índices de búsqueda:

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": [...] }

Tip

Para obtener más información sobre cómo iterar a través de un cursor, consulte la Acceder a los datos mediante una guía del cursor.

Puede actualizar un índice de búsqueda de MongoDB llamando al método update_search_index() en una instancia Collection. Este método acepta los siguientes parámetros:

  • Nombre del índice a actualizar

  • Documento de definición de índice modificado

  • Opciones de índice, especificadas en una instancia de UpdateSearchIndexOptions

El siguiente ejemplo actualiza el índice de búsqueda de MongoDB llamado,static_index creado en la sección "Crear múltiples índices de búsqueda" de esta página. El código crea un nuevo documento de definición de índice que le indica que utilice asignaciones dinámicas en lugar de estáticas. A continuación, el código llama al update_search_index() método para actualizar el índice:

let name = "static_index";
let definition = doc! { "mappings": doc! {"dynamic": true} };
my_coll.update_search_index(name, definition, None).await?;

Puede eliminar un índice de búsqueda de MongoDB llamando al método delete_search_index() en una instancia Collection. Este método acepta los siguientes parámetros:

El siguiente ejemplo borra el índice de MongoDB Search llamado example_index creado en la sección Crear un índice de búsqueda de esta página. El código pasa el nombre del índice al método delete_search_index() para borrar el índice:

let name = "example_index";
my_coll.drop_search_index(name, None).await?;

Para obtener más información sobre otros índices que puede crear utilizando el controlador Rust, consulte la guía de índices.

Para obtener más información sobre MongoDB Search, consulte la siguiente documentación de Atlas:

Para obtener más información sobre los métodos y tipos mencionados en esta guía, consulte la siguiente documentación de API:

Volver

Indexes

En esta página