Overview
En esta guía, puede aprender cómo gestionar programáticamente los índices de MongoDB Search y MongoDB Vector Search usando el driver Ruby.
La funcionalidad de búsqueda de MongoDB permite realizar búsquedas de texto completo en colecciones alojadas en MongoDB. Para obtener más información sobre MongoDB Search, consulte la MongoDB Search Overview.
La Búsqueda Vectorial de MongoDB permite realizar búsquedas semánticas en incrustaciones vectoriales almacenadas en MongoDB. Para obtener más información sobre la Búsqueda Vectorial de MongoDB, consulte la Descripción General de la Búsqueda Vectorial de MongoDB.
Puede llamar a los siguientes métodos para administrar sus índices de búsqueda MongoDB y búsqueda vectorial MongoDB:
search_indexes#create_onesearch_indexes#create_manysearch_indexes#update_onesearch_indexes#drop_one
Nota
La gestión de MongoDB Search y MongoDB Vector Search Index es asíncrona
El controlador Ruby gestiona de manera asíncrona los índices de MongoDB Search y MongoDB Vector Search. Los métodos descritos en las siguientes secciones devuelven la respuesta del servidor de forma inmediata, pero los cambios en tus índices de búsqueda se llevan a cabo en segundo plano y podrían no completarse hasta algún tiempo después.
Las siguientes secciones proporcionan ejemplos de código que demuestran cómo utilizar cada uno de los comandos anteriores.
Crear un índice de búsqueda
Para crear un solo índice de MongoDB Search o MongoDB Vector Search, utiliza el método search_indexes#create_one. Para crear múltiples índices, utiliza el método search_indexes#create_many. Ambos métodos retornan de inmediato, mientras que los índices se crean de forma asíncrona en segundo plano.
El siguiente ejemplo de código muestra cómo crear un índice de búsqueda de MongoDB proporcionando una definición de índice y un nombre opcional para el índice:
# Creates indexes on all dynamically indexable fields with a default index name collection.search_indexes.create_one( { mappings: { dynamic: true } } ) # Creates an index on the specified field with the specified index name index_definition = { mappings: { dynamic: false, fields: { fullplot: { type: 'string' } } } } collection.search_indexes.create_one(index_definition, name: 'mySearchIndex')
Nota
Por defecto, el controlador crea un índice de MongoDB Search si no se pasa un parámetro type. Para crear un índice de búsqueda vectorial de MongoDB, debe establecer el parámetro type a 'vectorSearch' al llamar a create_one.
Puede usar search_indexes#create_many para crear varios índices de MongoDB Search o MongoDB Vector Search proporcionando una matriz de especificaciones de índice. Cada especificación de índice debe incluir los siguientes componentes:
definitionparámetro: Define el índicenameparámetro: Especifica el nombre del índicetypeparámetro: Especifica el tipo de índice ('search'o'vectorSearch')
El siguiente ejemplo de código muestra cómo crear tanto índices de MongoDB Search como de MongoDB Vector Search en una sola llamada:
index_spec_1 = { name: 'searchIndex_plot', type: 'search', definition: { mappings: { dynamic: false, fields: { plot: { type: 'string' } } } } } index_spec_2 = { name: 'vsIndex_plot_embedding', type: 'vectorSearch', definition: { fields: [ { type: "vector", path: "plot_embedding", numDimensions: 1536, similarity: "dotProduct" } ] } } collection.search_indexes.create_many([index_spec_1, index_spec_2])
Para definiciones de índices más largas, es útil definir las definiciones de índices fuera de la llamada del método. Para saber más sobre la sintaxis de las definiciones de índices, consulta las guías Revisar la sintaxis del índice de MongoDB Search o Cómo indexar campos para la MongoDB Vector Search en el manual de Atlas.
Actualizar un índice de búsqueda
Para actualizar un índice MongoDB Search o MongoDB Vector Search, utiliza el método search_indexes#update_one.
Para actualizar un índice, debe proporcionar una nueva definición de índice. Debe especificar el índice que desea actualizar utilizando el valor name o id. El siguiente código muestra cómo actualizar un índice de búsqueda de MongoDB:
updated_definition = { mappings: { dynamic: false, fields: { fullplot: { type: 'string' } } } } # Specifies the index to update by using the index name collection.search_indexes.update_one(updated_definition, name: 'searchIndex_plot') # Specifies the index to update by using the index id collection.search_indexes.update_one(updated_definition, id: <index id>)
Eliminar un índice de búsqueda
Para borrar un índice de MongoDB Search o de MongoDB Vector Search, utiliza el método search_indexes#drop_one.
Para eliminar un índice, se debe proporcionar el id o el name del índice. El siguiente código muestra cómo eliminar un índice de búsqueda de una colección:
# Specifies the index to delete by using the index name collection.search_indexes.drop_one(name: 'searchIndex_plot') # Specifies the index to delete by using the index id collection.search_indexes.drop_one(id: <index id>)
Índices de búsqueda de listas
Puede usar el objeto search_indexes para listar toda la especificación del índice de cada índice de MongoDB Search y MongoDB Vector Search en una colección:
puts collection.search_indexes.collect(&:to_json)
Para enumerar los campos individuales en la especificación de índices para cada índice, recorre el objeto search_indexes:
collection.search_indexes.each do |index_spec| p index_spec['id'] p index_spec['name'] p index_spec['status'] p index_spec['queryable'] p index_spec['latestDefinition'] end
Información Adicional
Para obtener más información sobre MongoDB Search, consulta la documentación de MongoDB Search.
Para obtener más información sobre MongoDB Vector Search, consulta el driver de Ruby Guía para ejecutar una query de búsqueda vectorial en MongoDB o la documentación de MongoDB Vector Search.
Documentación de la API
Para obtener más información sobre cualquiera de los métodos mencionados en esta guía, consulta la siguiente documentación de la API: