Overview
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:
Crear un modelo de índice de búsqueda
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 índicename(), 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.
Ejemplo
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();
Crear un índice de búsqueda
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:
Modelo de índice, especificado en una instancia de
SearchIndexModelOpciones de índice, especificadas en CreateSearchIndexOptions 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 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"
Crear múltiples índices de búsqueda
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
SearchIndexModelinstanciasOpciones de índice, especificadas en una instancia
CreateSearchIndexOptions
Ejemplo
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"]
Índices de búsqueda de listas
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
Ejemplo
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.
Actualizar un índice de búsqueda
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
Ejemplo
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?;
Eliminar un índice de búsqueda
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:
Nombre del índice a eliminar
Opciones de índice, especificadas en una instancia de 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 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:
Documentación de la API
Para obtener más información sobre los métodos y tipos mencionados en esta guía, consulte la siguiente documentación de API: