Visão geral
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_onesearch_indexes#create_manysearch_indexes#update_onesearch_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.
Criar um índice de pesquisa
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:
definitionparâmetro: Define o índicenameparâmetro: Especifica o nome do índicetypeparâ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 .
Atualizar um Índice de Pesquisa
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>)
Excluir um índice de pesquisa
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>)
Listar índices de pesquisa
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
Informações adicionais
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 .
Documentação da API
Para saber mais sobre qualquer um dos métodos discutidos nesta guia, consulte a seguinte documentação da API: