创建 Atlas Search 索引
Atlas Search 索引是一种数据结构,它以易于搜索的格式对数据进行分类。它是术语与包含这些术语的文档之间的映射。 Atlas Search 索引可以使用某些标识符更快地检索文档。您必须配置 Atlas Search 索引,才能使用 Atlas Search 查询 Atlas 集群中的数据。
您可在单个字段或多个字段上创建 Atlas Search 索引。我们建议您对经常用于排序或筛选数据的字段建立索引,以便在查询时快速检索包含相关数据的文档。
您可以通过 Atlas UI、API、Atlas CLI 和 Terraform 为 Atlas 集群上除 时间序列集合之外的所有集合创建 Atlas Search 索引。
先决条件
要创建 Atlas Search 索引,您必须拥有符合以下条件的 Atlas 集群:
任何集群层上的 MongoDB
4.2
或更高版本。注意
您创建的内容不能超过:
在
M0
集群上具有 3 个索引。M2
集群上有 5 个索引。M5
集群上有 10 个索引。
您可以在
M10+
集群上创建的索引数量没有限制。要为其创建 Atlas Search 索引的集合。
必需的访问权限
下表列出了每个角色支持的访问模式。
角色 | 操作 | Atlas 用户界面 | Atlas API | Atlas Search API | Atlas |
---|---|---|---|---|---|
Project Data Access Read Only 或更高级别的角色 | 用于查看 Atlas Search 分析器和索引。 | ✓ | ✓ | ||
Project Data Access Admin 或更高级别的角色 | 创建和管理 Atlas Search 分析器和索引,并将角色分配给 API 密钥。 | ✓ | ✓ | ✓ | ✓ |
✓ | ✓ | ||||
为 API 密钥创建访问列表条目,并从 API 密钥访问列表中显示的客户端发送请求。 | ✓ | ✓ | |||
使用 Atlas 用户界面或 API 创建、查看、编辑和删除 Atlas Search 索引。 | ✓ | ✓ | ✓ |
您必须至少拥有要创建索引的数据库的readWriteAnyDatabase
角色或readWrite
访问权限。要了解详情,请参阅内置角色或特定特权。
创建 Atlas Search 索引
您可以使用 Atlas 用户界面、MongoDB Compass 来创建 Atlas Search 索引,也可以使用mongosh
、Atlas CLI、 API 或受支持的 MongoDB 驱动程序以您的首选语言以编程方式创建 Atlas Search 索引。
注意
➤ 使用选择语言下拉菜单设置本节中示例的语言。
节点状态
创建 Atlas Search 索引时,Atlas UI 右侧面板中的 Atlas Search Indexes(Atlas Search 索引)标签页会显示有关选定命名空间的 Atlas Search 索引的信息。Status 列显示集群主节点上索引的当前状态。单击状态下方的 View status details 链接可查看集群所有节点上索引的状态。
![Atlas Search 索引信息面板的屏幕截图](/zh-cn/docs/atlas/static/9770a370d736ae4a3f63ab4a15f97eb1/6859e/fts-index-status.webp)
当 Status 列显示为 Active时,索引已准备就绪,可供使用。在其他状态下,对索引的查询可能会返回不完整的结果。
状态 | 说明 |
---|---|
未启动 | Atlas 尚未开始构建索引。 |
初始化同步(Resumable Initial Sync) | Atlas 正在构建索引或在编辑后重新构建索引。当该索引处于以下状态时:
|
活跃的 | 索引已准备就绪。 |
正在恢复 | 复制遇到错误。当当前复制点在 mongod oplog 上不再可用时,通常会出现此状态。您仍然可以查询现有索引,直到它更新并且其状态变为Active 。使用View status details模式窗口中的错误来解决问题。要了解更多信息,请参阅修复 Atlas Search 问题。 |
已失败 | Atlas 无法构建索引。使用 View status details(查看状态详细信息)模式窗口中的错误来解决问题。要了解更多信息,请参阅修复 Atlas Search 问题。 |
正在删除 | Atlas 正在从集群节点中删除索引。 |
当 Atlas 构建索引时以及构建完成后,Documents 列会显示已完成索引的文档的百分比和数量。该列还会显示集合中的文档总数。
警告
如果您对已具有 Atlas Search 索引的集合进行分片,当该集合开始出现在分片上时,您可能会遇到短暂的查询停机时间。此外,如果您为包含 Atlas Search 索引的已分片集合添加分片,针对该集合的搜索查询将失败,直到添加的分片完成初始同步过程为止。要了解更多信息,请参阅初始同步进程。