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

Índices de pesquisa do Atlas

Nesta página

  • Criando índice de pesquisa
  • Atualizar índices de pesquisa
  • Eliminando índices de pesquisa
  • Listando índices de pesquisa

Se você estiver usando um banco de dados hospedado pelo MongoDB Atlas, o driver fornecerá a capacidade de criar, descartar e visualizar índices doAtlas Search em uma coleção por meio do atributo search_indexes:

client = Mongo::Client.new(your_atlas_uri, database: 'music')
client[:bands].search_indexes
# => #<Mongo::SearchIndex::View:0x000055e2822b9318 @collection=#<Mongo::Collection:0x660 namespace=music.bands> ...>

Os índices de pesquisa podem ser criados um de cada vez, ou vários podem ser criados em paralelo em uma única operação.

Para criar um único índice, utilize search_indexes#create_one, passando a definição de índice como o primeiro argumento e um nome opcional para o índice como o segundo argumento.

client[:bands].search_indexes.create_one({ dynamic: true })
client[:bands].search_indexes.create_one(
{
dynamic: false,
fields: {
name: { type: 'string', analyzer: 'lucene.simple' }
}
},
'band-name-index'
)

Para criar múltiplos índices, utilize o search_indexes#create_many que aceita uma matriz de especificações de índice. Ao contrário create_one, cada especificação de índice é um hash com pelo menos uma chave definition , que define o índice. Cada um também pode especificar uma chave name para nomear o índice.

client[:bands].search_indexes.create_many([
{ definition: { dynamic: true } },
{ name: 'band-name-index,
definition: {
dynamic: false,
fields: {
name: { type: 'string', analyzer: 'lucene.simple' }
}
}
},
])

Observe que, se você chamar create_one ou create_many, o método retornará imediatamente, antes que os índices sejam criados. Os índices são então criados em segundo plano, de forma assíncrona.

Você pode atualizar programaticamente um índice de pesquisa do Atlas. Por exemplo, você pode fazer isso para alterar o analisador usado ou para fornecer um mapeamento de campo explícito, em vez de um dinâmico. Para fazer isso, use o método search_indexes#update_one :

client[:bands].search_indexes.update_one(new_definition, id: index_id)
client[:bands].search_indexes.update_one(new_definition, name: index_name)

Os índices podem ser identificados pelo ID ou pelo nome, mas você deve especificar um ou outro. A nova definição de índice deve ser uma definição completa -- ela terá precedência conforme especificado sobre a definição existente.

Para obter o ID ou o nome de um índice que você deseja atualizar, você pode listar os índices do Atlas Search .

Para eliminar os índices do Atlas Search, chame search_indexes#drop_one e forneça o id ou o name do índice que você deseja eliminar.

client[:bands].search_indexes.drop_one(id: index_id)
client[:bands].search_indexes.drop_one(name: index_name)

Em ambos os casos, o método retornará imediatamente e o índice será eliminado em segundo plano, de forma assíncrona.

Para obter o ID ou nome de um índice que você deseja eliminar, você pode listar os índices do Atlas Search .

Para listar os índices de pesquisa disponíveis, itere sobre o objeto search_indexes :

client[:bands].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

Voltar

Indexes