Docs 菜单

创建和管理 Atlas Search 索引

Atlas Search 索引是一种数据结构,它会以易于搜索的格式对数据进行分类。它是术语与包含这些术语的文档之间的映射。Atlas Search 索引可以使用某些标识符更快地检索文档。您必须配置 Atlas Search 索引才能使用 Atlas Search 查询 Atlas 集群中的数据。

您可在单个字段或多个字段上创建 Atlas Search 索引。我们建议您对经常用于排序或筛选数据的字段建立索引,以便在查询时快速检索包含相关数据的文档。

您可以使用以下方法指定要进行索引的字段:

  • 动态映射,使 Atlas Search 能够自动索引每个文档中支持类型的所有字段。这可能会浪费磁盘空间,索引那些永远不会搜索的字段,并对集群性能产生负面影响。

  • 静态映射,可让您有选择地确定要索引的字段。如果字段包含多态数据,Atlas Search 仅对与索引定义中的映射相对应的文档进行索引编制,并忽略包含如下值的文档:与字段的索引定义中指定的映射不对应的值。

虽然 Atlas Search 上存储的数据与 Atlas 集群上的集合中的数据副本不同,Atlas Search 索引仍会占用部分磁盘空间和内存。如果您为包含字符串值的字段启用 store选项,或在索引中配置存储的源字段,Atlas Search 则会在磁盘上存储指定字段的相同副本,而此副本可能会占用磁盘空间。

当您使用Atlas Search索引时, Atlas 集群的空闲节点上的资源消耗可能会增加。这是由根本的mongot进程造成的,该进程为Atlas Search执行各种基本操作。空闲节点上的 CPU 利用率可能因索引的数量、复杂性和大小而异。

注意

Atlas Search 不支持使用 Atlas 用户界面中的 Customer Key Management(客户密钥管理)通过加密密钥对 Atlas Search 索引进行加密。

Atlas Search 提供内置分析器,用于创建可索引术语,纠正标点符号、大写、停用词等方面的差异。分析器会在查询中应用解析规则和语言规则。您还可以使用可用的内置字符筛选器、分词器和令牌筛选器创建自定义分析器。要了解有关内置和自定义分析器的更多信息,请参阅使用分析器处理数据

要进一步了解 Atlas Search 对其他数据类型的支持情况,请参阅数据类型mongot 进程在磁盘上按索引存储集群上集合的索引字段和 _id 字段。

如果您对为其定义 Atlas Search 索引的集合进行更改,最新数据可能无法立即用于查询。但是,mongot 会监控变更流,使其能够更新存储的数据副本,Atlas Search 索引最终也会保持一致。

当您更改索引定义时, mongot 会在后台自动重新构建新索引,同时继续使用旧索引为查询提供服务,以确保没有停机时间。当您在同一节点上部署 mongotmongod 进程以及将进程部署到不同节点上时,会发生这种情况。

如果您更改搜索部署的拓扑结构,Atlas Search 会在删除旧节点之前在任何新节点上配置并构建索引,以确保查询不会停机。

如果部署时 mongodmongot 进程都在同一节点上运行,当 Atlas Search 引入需要重建索引的变更时(例如某些需要更新索引的 Atlas Search 功能),Atlas 会自动免费部署额外的节点来构建索引,而旧节点则继续为查询提供服务。

注意

对于专用搜索节点

添加和调整 分片将会触发 Atlas Search 索引重建。在该索引重建期间,索引可能没有最新的数据。因此,针对这些分片上的数据的查询可能会失败,或返回不正确的结果。

如果您使用 Atlas Search 索引对集合进行重新分片,重新分片操作完成后,集合上的 Full Text Search 索引将变为不可用。操作完成后,您必须删除并创建新的 Atlas Search 索引。

如果发出命令更改数据库的主分片,则一旦操作完成,该数据库下任何未分片集合的 Atlas Search索引将不可用。movePrimary 操作完成后,您必须删除并创建新的 Atlas Search 索引。

喜欢通过观看视频来学习?

观看此视频,了解关于 Atlas Search 索引的概要信息。在此视频中,您可以了解有关分析器和 Atlas Search 自动完成字段类型的更多信息。

时长:8 分钟

您可以通过 Atlas UI、Atlas Search API、Atlas CLI、 mongosh、MongoDB Compass 和 MongoDB 驱动程序创建和管理 Atlas Search 索引。

要使用 Atlas CLI 创建和管理 Atlas Search 索引,您的 Atlas 集群必须运行 MongoDB 6.0+ 或 7.0+。

要使用 创建和管理Atlas Search索引,mongosh Atlas 集群必须运行MongoDB6.0 + 或7.0 +。

要使用Compass创建和管理AtlasAtlas Search Search索引,您的AtlasCompass Atlas集群必须运行MongoDBMongoDB7.0 +。

要在任何集群层上以编程方式创建和管理AtlasAtlas Search MongoDBSearch索引,您可以使用以下任何MongoDB驱动程序:

MongoDB 驱动
版本

1.25.0 或更高版本

3.9.0 或更高版本

2.21.0 或更高版本

1.13.0 或更高

4.11.0 或更高版本

9.0 或更高

3.3.0 或更高

5.2.0 或更高

5.6.0 或更高版本

1.17.0 或更高版本

4.5 或更高版本

2.19.2 或更高版本

2.8.0 或更高版本

5.2.0 或更高

要了解如何创建 Atlas Search 索引,请参阅创建 Atlas Search 索引。要亲身体验创建适用于示例数据集的 Atlas Search 索引,并对已编入索引的数据运行 Atlas Search 查询,请尝试以下页面中的教程: