Overview
En esta guía, aprenderá a crear y administrar índices de búsqueda MongoDB y de búsqueda vectorial MongoDB. Estos índices le permiten utilizar las siguientes funciones:
Búsqueda en MongoDB: Realice búsquedas rápidas de texto completo
Búsqueda de vectores de MongoDB: realice búsquedas semánticas (de similitud) en incrustaciones de vectores
Los índices de búsqueda de MongoDB y búsqueda vectorial de MongoDB especifican qué campos indexar, especifican cómo se indexan estos campos y establecen otras configuraciones opcionales.
Esta guía explica cómo realizar las siguientes acciones para administrar sus índices MongoDB Search y MongoDB Vector Search:
Nota
Datos de muestra
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 algunos tipos de estructura, incluido SearchIndexModel. Puedes usar el método builder() para construir una instancia de cada tipo encadenando los métodos de construcción de opciones.
El controlador Rust proporciona los siguientes métodos de construcción SearchIndexModel:
Método del constructor | Parameter Type | Descripción |
|---|---|---|
|
| Especifica la definición del índice. Si se omite esta configuración, el controlador crea un índice de búsqueda de MongoDB con asignaciones dinámicas. |
|
| Establece el nombre del índice. Si se omite esta configuración, el controlador establece el nombre en |
|
| Establece el tipo de índice. Si se omite esta configuración, el controlador crea un índice de búsqueda de MongoDB de forma predeterminada. |
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.
Para obtener más información sobre cómo definir índices de búsqueda vectorial de MongoDB, consulte Cómo indexar campos para la búsqueda vectorial en la documentación de Atlas.
Modelos de ejemplo
El siguiente ejemplo crea una instancia SearchIndexModel para proporcionar especificaciones para un índice denominado search_idx. El código especifica asignaciones estáticas de los campos title y released:
let def = doc! { "mappings": doc! { "dynamic": false, "fields": { "title": {"type": "string"}, "released": {"type": "date"} } }}; let idx_model = SearchIndexModel::builder() .definition(def) .name("search_idx".to_string()) .index_type(SearchIndexType::Search) .build();
El siguiente ejemplo crea una instancia SearchIndexModel para proporcionar especificaciones para un índice llamado vs_idx. El código especifica la ruta de inserción como plot_embedding, indexa 1536 dimensiones y utiliza la función de similitud vectorial "euclidean":
let def = doc! { "fields": [{ "type": "vector", "path": "plot_embedding", "numDimensions": 1536, "similarity": "euclidean", }] }; let idx_model = SearchIndexModel::builder() .definition(def) .name("vs_idx".to_string()) .index_type(SearchIndexType::VectorSearch) .build();
Crear un índice de búsqueda
Puede crear un índice de búsqueda MongoDB o de búsqueda vectorial MongoDB en una colección llamando al método create_search_index() en una instancia Collection. Este método acepta un modelo de índice como parámetro, especificado en una instancia SearchIndexModel.
Ejemplo
El siguiente ejemplo crea un índice de búsqueda de MongoDB en la colección embedded_movies. 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).await?; println!("Created MongoDB Search index:\n{}", result);
Created MongoDB Search index: "example_index"
Crear múltiples índices de búsqueda
Puede crear varios índices de búsqueda y búsqueda vectorial de MongoDB llamando al método create_search_indexes() en una instancia Collection. Este método acepta un vector de SearchIndexModel instancias como parámetro.
Ejemplo
Este ejemplo realiza las siguientes acciones:
Crea una instancia
SearchIndexModelque especifica un índice de búsqueda de MongoDB llamadoas_idxCrea una instancia
SearchIndexModelque especifica un índice de búsqueda vectorial de MongoDB llamadovs_idxPasa un
vecde ambas instanciasSearchIndexModelal métodocreate_search_indexes()Crea los índices de búsqueda de MongoDB y búsqueda vectorial de MongoDB en la colección
embedded_movies
let as_idx = SearchIndexModel::builder() .definition(doc! { "mappings": doc! {"dynamic": true} }) .name("as_idx".to_string()) .build(); let vs_idx = SearchIndexModel::builder() .definition(doc! { "fields": [{ "type": "vector", "path": "plot_embedding", "numDimensions": 1536, "similarity": "euclidean", }] }) .name("vs_idx".to_string()) .index_type(SearchIndexType::VectorSearch) .build(); let models = vec![as_idx, vs_idx]; let result = my_coll.create_search_indexes(models).await?; println!("Created indexes:\n{:?}", result);
Created MongoDB Search indexes: ["as_idx", "vs_idx"]
Índices de búsqueda de listas
Puede acceder a información sobre los índices MongoDB Search y MongoDB Vector Search existentes de una colección llamando al método list_search_indexes() en la colección.
Ejemplo
El siguiente ejemplo accede a información sobre los índices de búsqueda y búsqueda vectorial 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 e imprime una lista de los índices de búsqueda y búsqueda vectorial de MongoDB en la colección:
let mut cursor = my_coll.list_search_indexes().await?; while let Some(index) = cursor.try_next().await? { println!("{}\n", index); }
{ "id": "...", "name": "as_idx", "status": "READY", "queryable": true, "latestDefinitionVersion": {...}, "latestDefinition": { "mappings": { "dynamic": true } }, "statusDetail": [...] } { "id": "...", "name": "vs_idx", "type": "vectorSearch", "status": "READY", "queryable": true, ..., "latestDefinition": { "fields": [{ "type": "vector", "path": "plot_embedding", "numDimensions": 1536, "similarity": "euclidean" }] }, "statusDetail": [...] }
Tip
Para obtener más información sobre cómo iterar a través de un cursor, consulte la guía Acceder a datos mediante el uso de un cursor.
Actualizar un índice de búsqueda
Puede actualizar un índice de MongoDB Search o MongoDB Vector Search 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
Ejemplo
El siguiente ejemplo actualiza el índice de búsqueda vectorial,vs_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 use "dotProduct" como función de similitud vectorial. A continuación, el código llama al update_search_index() método para actualizar el índice:
let name = "vs_index"; let updated_def = doc! { "fields": [{ "type": "vector", "path": "plot_embedding", "numDimensions": 1536, "similarity": "dotProduct", }] }; my_coll.update_search_index(name, updated_def).await?;
Eliminar un índice de búsqueda
Puede eliminar un índice de MongoDB Search o MongoDB Vector Search llamando al método delete_search_index() en una instancia Collection. Este método acepta el nombre del índice que se va a eliminar como parámetro.
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).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:
Para obtener más información sobre MongoDB Vector 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: