Menu Docs
Página inicial do Docs
/ /

Índices de pesquisa do MongoDB e de Vector Search do MongoDB

Neste guia, você pode aprender a gerenciar programaticamente seus índices MongoDB Search e MongoDB Vector Search usando o driver Ruby.

O recurso MongoDB Search permite realizar pesquisas de texto completo em collections hospedadas no MongoDB Atlas. Para saber mais sobre a Pesquisa do MongoDB , consulte a Visão Geral da Pesquisa do MongoDB .

A Vector Search do MongoDB permite realizar pesquisas semânticas em incorporações vetoriais armazenadas no MongoDB Atlas . Para saber mais sobre a Vector Search do MongoDB , consulte a Visão geral da Vector Search do MongoDB .

Você pode chamar os seguintes métodos para gerenciar seus índices MongoDB Search e MongoDB Vector Search :

  • search_indexes#create_one

  • search_indexes#create_many

  • search_indexes#update_one

  • search_indexes#drop_one

Observação

O gerenciamento do índice do MongoDB Search e do MongoDB Vector Search é assíncrono

O driver Ruby gerencia índices MongoDB Search e MongoDB Vector Search de forma assíncrona. Os métodos descritos nas seções a seguir retornam a resposta do servidor imediatamente, mas as alterações nos índices de pesquisa ocorrem em segundo plano e podem não ser concluídas até algum tempo depois.

As seções a seguir fornecem exemplos de código que demonstram como usar cada um dos comandos anteriores.

Para criar um único índice do MongoDB Search ou do MongoDB Vector Search , use o método search_indexes#create_one. Para criar múltiplos índices, use o método search_indexes#create_many. Ambos os métodos retornam imediatamente, enquanto os índices são criados de forma assíncrona em segundo plano.

O seguinte exemplo de código mostra como criar um índice MongoDB Search fornecendo uma definição de índice e um nome opcional para o í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')

Observação

Por padrão, o driver cria um índice do MongoDB Search se você não passar um parâmetro type. Para criar um índice do MongoDB Vector Search , você deve definir o parâmetro type como 'vectorSearch' ao chamar create_one.

Você pode usar search_indexes#create_many para criar vários índices do MongoDB Search ou MongoDB Vector Search fornecendo um array de especificações de índice. Cada especificação de índice deve incluir os seguintes componentes:

  • definition parâmetro: Define o índice

  • name parâmetro: Especifica o nome do índice

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

O seguinte exemplo de código mostra como criar índices MongoDB Search e MongoDB Vector Search em uma chamada:

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 definições de índice mais longas, é útil definir as definições de índice fora da chamada de método. Para saber mais sobre a sintaxe das definições de índice, consulte os guias Revisar a sintaxe do índice do MongoDB Search ou os guias Como indexar campos para a Vector Search do MongoDB no manual do Atlas .

Para atualizar um índice do MongoDB Search ou do MongoDB Vector Search , use o método search_indexes#update_one.

Para atualizar um índice, você deve fornecer uma nova definição de índice. Você deve especificar o índice que deseja atualizar utilizando o name ou id do índice. O seguinte código mostra como atualizar um índice de pesquisa 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 excluir um índice do MongoDB Search ou do MongoDB Vector Search , use o método search_indexes#drop_one.

Para excluir um índice, é necessário fornecer o id ou name do índice. O seguinte código mostra como excluir um índice de pesquisa de uma coleção:

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

Você pode utilizar o objeto search_indexes para listar toda a especificação de índice de cada índice do MongoDB Search e do MongoDB Vector Search em uma collection:

puts collection.search_indexes.collect(&:to_json)

Para listar campos individuais na especificações de índice para cada índice, itere sobre o 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 saber mais sobre a Pesquisa do MongoDB , consulte a documentação da Pesquisa do MongoDB .

Para saber mais sobre a Vector Search do MongoDB , consulte o guia Executar uma query do driver MongoDB ou a documentação da Vector Search do MongoDB .

Para saber mais sobre qualquer um dos métodos discutidos nesta guia, consulte a seguinte documentação da API:

Voltar

Multichave

Nesta página