Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
Docs Menu
Docs Home
/ /

MongoDB Search e MongoDB Vector Search Indexes

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_one

  • search_indexes#create_many

  • search_indexes#update_one

  • search_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.

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:

  • 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 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.

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>)

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>)

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

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.

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:

Volver

Multikey

En esta página