Docs Menu
Docs Home
/ /

Índices de búsqueda de MongoDB y búsqueda vectorial de MongoDB

En esta guía, puede aprender a administrar mediante programación sus índices MongoDB Search y MongoDB Vector Search mediante el controlador Ruby.

La función de búsqueda de MongoDB permite realizar búsquedas de texto completo en colecciones alojadas en MongoDB. Para obtener más información sobre la búsqueda de MongoDB, consulte Descripción general de búsqueda de MongoDB.

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_one

  • search_indexes#create_many

  • search_indexes#update_one

  • search_indexes#drop_one

Nota

La gestión del índice de búsqueda de MongoDB y de búsqueda vectorial de MongoDB es asincrónica

El controlador Ruby gestiona los índices de MongoDB Search y MongoDB Vector Search de forma asíncrona. Los métodos descritos en las siguientes secciones devuelven la respuesta del servidor inmediatamente, pero los cambios en los índices de búsqueda se realizan en segundo plano y podrían no completarse hasta más tarde.

Las siguientes secciones proporcionan ejemplos de código que demuestran cómo utilizar cada uno de los comandos anteriores.

Para crear un único índice de MongoDB Search o MongoDB Vector Search, utilice el método search_indexes#create_one. Para crear varios índices, utilice el método search_indexes#create_many. Ambos métodos retornan inmediatamente, mientras que los índices se crean asincrónicamente 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:

  • definition parámetro: Define el índice

  • name parámetro: especifica el nombre del índice

  • type parámetro: especifica el tipo de índice ('search' o 'vectorSearch')

El siguiente ejemplo de código muestra cómo crear índices MongoDB Search y 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 índice más largas, es útil definirlas fuera de la llamada al método. Para obtener más información sobre la sintaxis de las definiciones de índice, consulte las guías "Revisar la sintaxis del índice de búsqueda de MongoDB" o "Cómo indexar campos para la búsqueda vectorial de MongoDB" en el manual de Atlas.

Para actualizar un índice de búsqueda MongoDB o de búsqueda vectorial MongoDB, utilice 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>)

Para eliminar un índice de búsqueda MongoDB o de búsqueda vectorial MongoDB, utilice el método search_indexes#drop_one.

Para eliminar un índice, 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>)

Puede utilizar el objeto search_indexes para enumerar la especificación de índice completa de cada índice de MongoDB Search y MongoDB Vector Search en una colección:

puts collection.search_indexes.collect(&:to_json)

Para enumerar campos individuales en la especificación del índice para cada índice, itere sobre 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

Para obtener más información sobre MongoDB Search, consulte la documentación de MongoDB Search.

Para obtener más información sobre MongoDB Vector Search, consulte el controlador Ruby. Ejecute una consulta de búsqueda vectorial de MongoDB o la documentación de búsqueda vectorial de MongoDB.

Para obtener más información sobre cualquiera de los métodos analizados en esta guía, consulte la siguiente documentación de API:

Volver

Multikey

En esta página