Visão geral
Neste guia, você pode aprender como gerenciar programaticamente seus índices do Atlas Search e do Atlas Vector Search usando o driver Ruby.
O recurso Atlas Search permite realizar pesquisas de texto completo em collections hospedadas no MongoDB Atlas. Para saber mais sobre o Atlas Search, consulte a Visão geral do Atlas Search.
O Atlas Vector Search permite que você realize pesquisas semânticas em incorporações vetoriais armazenadas no MongoDB Atlas. Para aprender mais sobre o Atlas Vector Search, veja a Visão Geral do Atlas Vector Search.
Você pode chamar os seguintes métodos para gerenciar seus índices do Atlas Search:
search_indexes#create_one
search_indexes#create_many
search_indexes#update_one
search_indexes#drop_one
Observação
O gerenciamento de índices de pesquisa do Atlas Search e do Vector Search é assíncrono
O driver Ruby gerencia os índices do Atlas Search e do 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 seus í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 Atlas Search ou Vector Search, use o método search_indexes#create_one
. Para criar vários í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 do Atlas 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 de pesquisa do Atlas Search se você não fornecer um parâmetro type
. Para criar um índice de pesquisa vetorial, é necessário definir o parâmetro type
para 'vectorSearch'
ao chamar create_one
.
Você pode usar search_indexes#create_many
para criar vários índices de pesquisa do Atlas Search ou do 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 índicename
parâmetro: Especifica o nome do índicetype
parâmetro: especifica o tipo de índice ('search'
ou'vectorSearch'
)
O exemplo de código a seguir mostra como criar índices Atlas Search e 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 do método. Para aprender mais sobre a sintaxe das definições de índice, consulte o guia Revisar a sintaxe do índice do Atlas Search no manual do Atlas.
Atualizar um Índice de Pesquisa
Para atualizar um índice Atlas Search ou 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 usando o name
ou id
do índice. O seguinte código mostra como atualizar um índice do Atlas 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>)
Excluir um índice de pesquisa
Para excluir um índice do Atlas Search ou do 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 usar o objeto search_indexes
para listar a especificação de índice inteira de cada índice de pesquisa do Atlas Search e do Vector Search em uma coleção:
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 aprender mais sobre o MongoDB Atlas Search, consulte a documentação do Atlas Search.
Documentação da API
Para saber mais sobre qualquer um dos métodos discutidos nesta guia, consulte a seguinte documentação da API: