Overview
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.
Crear un modelo de índice de búsqueda
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.
Ejemplo
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();
Crear un índice de búsqueda
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:
Modelo de índice, especificado en una instancia de
SearchIndexModelOpciones de índice, especificadas en CrearOpcionesDeÍndiceDeBúsqueda instancia
Ejemplo
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"
Crear múltiples índices de búsqueda
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
SearchIndexModelOpciones de índice, especificadas en una instancia de
CreateSearchIndexOptions
Ejemplo
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"]
listSearchIndexes
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
Ejemplo
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.
Actualizar un índice de búsqueda
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
Ejemplo
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?;
Eliminar un índice de búsqueda
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:
Nombre del índice a eliminar
Opciones de índice, especificadas en una instancia DropSearchIndexOptions
Ejemplo
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?;
Información Adicional
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:
Documentación de la API
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: