Índices de pesquisa do Atlas
Nesta página
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> ...>
Criando índice de pesquisa
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.
Atualizar índices de pesquisa
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 .
Eliminando índices de pesquisa
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 .
Listando índices de pesquisa
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