Menu Docs
Página inicial do Docs
/ / /
Ruby Driver
/

Índices de pesquisa do Atlas

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.

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 índice

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

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

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

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

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

Para aprender mais sobre o MongoDB Atlas Search, consulte a documentação do Atlas Search.

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

Voltar

Multichave

Nesta página