Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
Docs Menu
Docs Home
/
Fundamentals
/

Índices de búsqueda de MongoDB

En esta guía, puedes aprender cómo crear y gestionar MongoDB Search índices. Estos índices te permiten utilizar las funcionalidades de MongoDB Search para realizar búsquedas rápidas de texto completo en los datos almacenados en un clúster de Atlas. Una configuración de índice de MongoDB Search define el comportamiento de MongoDB Search especificando qué campos indexar, cómo se indexan estos campos y otras configuraciones opcionales. Para obtener más información sobre los índices de búsqueda de MongoDB, consulta la Documentación de MongoDB Search.

Esta guía explica cómo realizar las siguientes acciones para gestionar tus índices de MongoDB Search:

Nota

Los ejemplos de esta guía acceden al posts colección en la base de datos sample_training, que es uno de los conjuntos de datos de muestra de Atlas. Consulta Cargar datos de muestra en la documentación de Atlas para obtener instrucciones sobre cómo importar los datos de muestra de Atlas.

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

Nota

Instancia de modelos

El controlador Rust implementa el patrón de diseño Builder para la creación de muchos tipos diferentes, incluidos SearchIndexModel. Se puede usar el método builder() para construir una instancia de cada tipo encadenando métodos del generador de opciones.

El controlador de Rust proporciona los siguientes métodos de montaje de SearchIndexModel:

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

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

El documento BSON que pase al método de construcción definition() debe incluir el campo mappings. Para indexar automáticamente todos los campos admitidos en tu colección, habilita los mapeos dinámicos configurando el campo anidado mappings.dynamic como true. Para indexar solo campos específicos, habilita los mapeos estáticos configurando el campo anidado mappings.dynamic como false e incluyendo una lista de los campos que deseas indexar.

Tip

Mapeos de campos de MongoDB Search

Para saber más sobre los mapeos de campos de búsqueda en MongoDB Search, consulta Definir mapeos de campos en la documentación de Atlas.

El siguiente ejemplo crea especificaciones para un índice denominado example_index en una instancia de SearchIndexModel. El código establece una asignación estática para indexar solo 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();

Puedes crear un índice de MongoDB Search en una colección llamando al método create_search_index() en una instancia de 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 establece el nombre del índice y habilita el mapeo dinámico. Luego, el código pasa la instancia de SearchIndexModel al método create_search_index() para crear el MongoDB Search índice:

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 MongoDB Search a la vez llamando al método create_search_indexes() en una instancia de Collection. Este método acepta los siguientes parámetros:

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

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

El siguiente ejemplo crea dos índices de MongoDB Search llamados dynamic_index y static_index en la colección posts. El código crea SearchIndexModel instancias para cada índice que especifican los nombres y definiciones de los índices. Luego, 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"]

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

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

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

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

El siguiente ejemplo accede a información sobre los índices de búsqueda de MongoDB Search creados en la sección Crear varios índices de búsqueda de esta página. El código llama al método list_search_indexes() y pasa un valor de None para cada parámetro, lo que indica al driver que devuelva información sobre todos los índices de búsqueda de MongoDB con opciones por defecto. Luego, el código muestra 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 un cursor, consulte la Guía para Acceder a los Datos Usando un Cursor.

Puedes 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 que se actualizará

  • Documento de definición de índice modificado

  • Opciones de índice, especificadas en una instancia UpdateSearchIndexOptions

El siguiente ejemplo actualiza el índice MongoDB Search llamado static_index, que se creó en la sección Crear varios índices de búsqueda de esta página. El código crea un nuevo documento de definición de índice que indica al índice que use mapeos dinámicos en lugar de mapeos estáticos. Luego, el código invoca el método update_search_index() para actualizar el índice:

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

Puedes borrar 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 aprender sobre otros índices que puedes crear utilizando el driver de Rust, consulta la guía de Índices.

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

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

En esta página