创建和管理 Atlas Search 索引
Atlas Search 索引是一种数据结构,它会以易于搜索的格式对数据进行分类。它是术语与包含这些术语的文档之间的映射。Atlas Search 索引可以使用某些标识符更快地检索文档。您必须配置 Atlas Search 索引才能使用 Atlas Search 查询 Atlas 集群中的数据。
您可在单个字段或多个字段上创建 Atlas Search 索引。我们建议您对经常用于排序或筛选数据的字段建立索引,以便在查询时快速检索包含相关数据的文档。
您可以使用以下方法指定要进行索引的字段:
动态映射,使 Atlas Search 能够自动索引每个文档中支持类型的所有字段。这可能会浪费磁盘空间,索引那些永远不会搜索的字段,并对集群性能产生负面影响。
静态映射,可让您有选择地确定要索引的字段。如果字段包含多态数据,Atlas Search 仅对与索引定义中的映射相对应的文档进行索引编制,并忽略包含如下值的文档:与字段的索引定义中指定的映射不对应的值。
Considerations
创建和管理Atlas Search索引时,请考虑以下因素:
分析器和字段映射
Atlas Search 提供内置分析器,用于创建可索引术语,纠正标点符号、大写、停用词等方面的差异。分析器会在查询中应用解析规则和语言规则。您还可以使用可用的内置字符筛选器、分词器和令牌筛选器创建自定义分析器。要了解有关内置和自定义分析器的更多信息,请参阅使用分析器处理数据。
要学习;了解Atlas Search支持哪些数据类型进行字段映射,请参阅数据类型。 mongot
进程将集群上集合的索引字段和_id
字段存储在磁盘上的每个索引上。
注意
Atlas Search 不支持使用 Atlas 用户界面中的 Customer Key Management(客户密钥管理)通过加密密钥对 Atlas Search 索引进行加密。
喜欢通过观看视频来学习?
观看此视频,了解关于 Atlas Search 索引的概要信息。在此视频中,您可以了解有关分析器和 Atlas Search 自动完成字段类型的更多信息。
时长:8 分钟
磁盘、内存和资源使用情况
虽然 Atlas Search 上存储的数据与 Atlas 集群上的集合中的数据副本不同,Atlas Search 索引仍会占用部分磁盘空间和内存。如果您为包含字符串值的字段启用 store
选项,或在索引中配置存储的源字段,Atlas Search 则会在磁盘上存储指定字段的相同副本,而此副本可能会占用磁盘空间。
当您使用 Atlas 搜索索引时,您可能会发现 Atlas 集群的空闲节点上的资源消耗增加。这是由于底层的 mongot 进程,它为 Atlas Search 执行各种重要操作。空闲节点上的 CPU 利用率可能会因索引的数量、复杂性和大小而有所不同。
注意
如果您的集合包含16 MB 或更大的文档,则Atlas Search无法为您的数据索引。当对大型文档的更新操作导致变更流事件超过16 MB BSON限制时,也可能会出现此问题。为避免这种情况,请考虑以下最佳实践:
构建文档结构,尽量减少子文档或数组的大小。
避免执行更新或替换大型字段、子文档或数组的操作。
要学习;了解详情,请参阅 变更流生产建议和减小大型文档的大小。
索引一致性和重建
如果您对为其定义 Atlas Search 索引的集合进行更改,最新数据可能无法立即用于查询。但是,mongot
会监控变更流,使其能够更新存储的数据副本,Atlas Search 索引最终也会保持一致。
当您更改索引定义时,mongot
会在背景自动重建新索引,同时继续使用旧索引为查询提供服务,以确保不会停机。当您在同一节点上部署mongot
和mongod
进程以及将进程部署在不同节点上时,会发生这种情况。当您启用或禁用静态加密时, Atlas还会重建索引。
如果您更改搜索部署的拓扑结构,Atlas Search 会在删除旧节点之前在任何新节点上配置并构建索引,以确保查询不会停机。
对于mongod
和mongot
进程在同一节点上运行的部署,如果Atlas Search引入需要重建索引的更改(例如需要更新索引的某些Atlas Search功能),Atlas会免费自动部署额外的节点构建索引,而旧节点继续为您的查询提供服务。
专用搜索节点
您可以部署专用搜索节点来提高性能、可扩展性和资源隔离性。如果您已部署搜索节点,请考虑以下事项:
添加和调整 分片将会触发 Atlas Search 索引重建。在该索引重建期间,索引可能没有最新的数据。因此,针对这些分片上的数据的查询可能会失败,或返回不正确的结果。
如果您使用 Atlas Search 索引对集合进行重新分片,重新分片操作完成后,集合上的 Full Text Search 索引将变为不可用。操作完成后,您必须删除并创建新的 Atlas Search 索引。
如果发出命令更改数据库的主分片,则一旦操作完成,该数据库下任何未分片集合的 Atlas Search索引将不可用。
movePrimary
操作完成后,您必须删除并创建新的 Atlas Search 索引。
支持的客户端
您可以通过 Atlas UI、Atlas Search API、Atlas CLI、 mongosh
、MongoDB Compass 和 MongoDB 驱动程序创建和管理 Atlas Search 索引。
Atlas CLI
要使用 Atlas CLI 创建和管理 Atlas Search 索引,您的 Atlas 集群必须运行 MongoDB 6.0+ 或 7.0+。
mongosh
要使用 创建和管理Atlas Search索引,mongosh
Atlas 集群必须运行MongoDB6.0 + 或7.0 +。
MongoDB Compass
要使用Compass创建和管理AtlasAtlas Search Search索引,您的AtlasCompass Atlas集群必须运行MongoDBMongoDB7.0 +。
MongoDB 驱动程序
要在任何集群层上以编程方式创建和管理AtlasAtlas Search MongoDBSearch索引,您可以使用以下任何MongoDB驱动程序:
后续步骤
要了解如何创建 Atlas Search 索引,请参阅创建 Atlas Search 索引。要亲身体验创建适用于示例数据集的 Atlas Search 索引,并对已编入索引的数据运行 Atlas Search 查询,请尝试以下页面中的教程: