Make the MongoDB docs better! We value your opinion. Share your feedback for a chance to win $100.
Click here >
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.

MongoDB Vector Search permite realizar búsquedas semánticas en incrustaciones vectoriales almacenadas en MongoDB. Para obtener más información sobre MongoDB Vector Search, consulte la Descripción general de MongoDB Vector Search.

Puede llamar a los siguientes métodos para gestionar sus índices de MongoDB Search y MongoDB Vector Search:

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

En las siguientes secciones se proporcionan ejemplos de código que demuestran cómo usar 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 utilizar search_indexes#create_many para crear múltiples índices de MongoDB Search o MongoDB Vector Search proporcionando un arreglo 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 . Debes especificar el índice que quieres actualizar usando el name o el id del índice. El siguiente código muestra cómo actualizar un índice de MongoDB Search:

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