Docs 菜单
Docs 主页
/ / /
Ruby MongoDB 驱动程序
/

Atlas Search 索引

在此页面上

  • 创建搜索索引
  • 更新搜索索引
  • 删除搜索索引
  • 列出搜索索引

如果您使用的是MongoDB Atlas托管的数据库,则驱动程序提供通过 search_indexes 属性创建、删除和查看集合上的 Atlas Search索引的功能:

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

可以一次创建一个搜索索引,也可以在单个操作中并行创建多个搜索索引。

要创建单个索引,请使用search_indexes#create_one ,将索引定义作为第一个参数传递,并将索引的可选名称作为第二个参数传递。

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

要创建多个索引,请使用接受索引规范数组的search_indexes#create_many 。 与create_one不同,每个索引规范都是至少具有一个definition键的哈希值,用于定义索引。 每个索引还可以指定一个name键来命名索引。

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

请注意,无论是调用create_one还是create_many ,该方法都会在创建索引之前立即返回。 然后在背景异步创建索引。

您可以通过编程方式更新 Atlas 搜索索引。 例如,您可以执行此操作以更改使用的分析器,或提供显式字段映射(而不是动态映射)。 为此,请使用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)

索引可由 ID 或名称标识,但必须指定其中之一。 新的索引定义必须是完整的定义,根据指定,它将优先于现有定义。

要获取要更新的索引的ID或名称,您可以列出Atlas Search索引

要删除 Atlas 搜索索引,请调用search_indexes#drop_one并提供要删除的索引的idname

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

无论哪种情况,该方法都将立即返回,并且索引将在背景异步删除。

要获取要删除的索引的ID或名称,您可以列出Atlas Search索引

要列出可用的搜索索引,请遍历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

后退

索引