FAQ: Atlas Search
在此页面上
- 启用并使用 Atlas Search 是否需要付费?
- 我可以运行与 Atlas Search 查询匹配的部分字符串吗?
- 我是否可以使用
wildcard
或regex
操作符执行不区分大小写的搜索? storedSource
是否支持字段上不区分大小写的排序规则?- Atlas Search 索引如何在分片上工作?
- 我是否可以使用分片键对特定分片运行 Atlas Search 查询?
- 查询是在主节点还是从节点上运行?
- 我是否可以复制索引?
- Atlas Search 是否将我的整个索引存储在内存中?
- 为什么我的搜索索引消失了?
- 我是否可以通过云备份快照恢复 Atlas Search 索引?
- Atlas Search 是否可以与 CSFLE 加密客户端一起使用?
- 我是否可以查询 CSFLE 加密的数据?
- 我是否可以将 Queryable Encryption 与 Atlas Search 一起使用?
- 我是否可以对时间序列集合使用 Atlas Search?
- 我可以请求新功能吗?
- MongoDB 支持部门能否访问我的搜索基础设施和日志?
- 我可以在多个集合中运行
查询吗?
启用并使用 Atlas Search 是否需要付费?
不需要,当您在 Atlas 集群上启用 Atlas Search 时,不会产生任何额外的费用或收费。不过,您可能会发现集群上的资源使用量有所增加,具体取决于索引集合大小或索引定义等因素。要管理和控制 Atlas Search 资源使用量,您可以部署 专用的搜索节点,这是每个节点的额外成本。我们建议在您的生产环境中使用该方法。
我可以运行与 Atlas Search 查询匹配的部分字符串吗?
是。以下 Atlas Search 操作符支持部分字符串匹配查询:
我是否可以使用 wildcard
或 regex
操作符执行不区分大小写的搜索?
是。您可以将 wildcard 和 regex 操作符与自定义分析器一起使用,以执行不区分大小写的搜索。您可以使用以下分词器和词元筛选器定义自定义分析器,以执行通配符不区分大小写搜索:
storedSource
是否支持字段上不区分大小写的排序规则?
是。Atlas Search storedSource 选项存储原始值。要在 $search
阶段之后对使用 returnStoredSource 选项返回的结果执行不区分大小写的操作,您必须在创建集合时将集合的默认排序规则强度设置为 1
或 2
,并且不能在查询和索引中指定不同的排序规则。
Atlas Search 索引如何在分片上工作?
如果将分片添加到具有现有 Atlas Search 索引的集合,则为该 Atlas Search 索引新添加的分片会发生初始同步。每个分片的 Atlas Search 索引仅包含该分片上存在的集合中的文档。要了解更多信息,请参阅对全局集合进行分片。
警告
如果您对已具有 Atlas Search 索引的集合进行分片,当该集合开始出现在分片上时,您可能会遇到短暂的查询停机时间。此外,如果您为包含 Atlas Search 索引的已分片集合添加分片,针对该集合的搜索查询将失败,直到添加的分片完成初始同步过程为止。要了解更多信息,请参阅初始同步进程。
我是否可以使用分片键对特定分片运行 Atlas Search 查询?
否,您无法使用分片键对特定分片或一部分分片运行 Atlas Search 查询。在分片集群环境中,Atlas Search 查询是对所有分片运行的分散-聚集查询。
不过,如果您使用区域将分片集合分布到集群中的一部分片上,则 Atlas Search 将查询路由到包含所查询的集合分片的区域,并仅对该集合所在的分片运行 $search
查询。
查询是在主节点还是从节点上运行?
默认情况下,查询在主节点上运行。您可以配置读取偏好,或使用副本集标记指定读取偏好。要了解更多信息,请参阅 Atlas Search 概述。
我是否可以复制索引?
是,您可以执行以下操作以复制索引:
创建新的 Atlas Search 索引。
使用 Atlas Search JSON Editor(JSON 编辑器)创建新的索引。粘贴您复制的索引,然后单击 Create Search Index(创建搜索索引)。在创建 Atlas Search 索引后,您可以直接在 Atlas Search JSON Editor(JSON 编辑器)或 Atlas Search Visual Index Builder(可视化索引构建器)中进行所需的任何编辑。
Atlas Search 是否将我的整个索引存储在内存中?
不支持,Atlas Search 会将内存用于 JVM 堆指标,该指标存储了搜索索引的自动完成和文本标记。与其他数据库引擎类似,Atlas Search 将大部分索引文件存储在磁盘上,这得益于基础操作系统页面缓存。
为什么我的搜索索引消失了?
验证您输入的数据库和集合名称是否正确。如果您输入的数据库或集合名称不存在,Atlas 用户界面将临时构建索引并在不久后将其删除。
如果您使用
$out
聚合阶段覆盖您的集合,则必须删除并重新创建Atlas Search索引,因为Atlas Search索引不会复制到目标集合。 要了解更多信息,请参阅$out 索引约束。如果您对使用 Atlas Search 的集合重新分片,该操作将删除现有的搜索索引。在分片操作完成后,您必须手动重建集合的搜索索引。
我是否可以通过云备份快照恢复 Atlas Search 索引?
对于运行 MongoDB 4.2 或更高版本的 M10+
专用集群,Atlas 将从云备份快照恢复 Atlas Search 索引定义。Atlas 不恢复索引数据,因此 mongot
进程会对所有恢复的索引定义执行初始同步。如果在集群上定义了大型搜索索引,则在快照恢复期间可能会遇到延迟。
Atlas Search能否与 CSFLE 加密客户端一起使用?
是的,您可以使用CSFLE加密客户端对 MongoDB 6.0及更高版本中的数据运行 Atlas Search 查询。
是否可以查询CSFLE加密数据?
否,您无法使用 Atlas Search 查询 CSFLE 加密的数据。
我是否可以将 Queryable Encryption 与 Atlas Search 一起使用?
否,Queryable Encryption 与 Atlas Search 不兼容。
我是否可以对时间序列集合使用 Atlas Search?
否,您无法对时间序列集合使用 Atlas Search。
我可以请求新功能吗?
是的,用户可以请求新功能,也可以使用MongoDB 反馈引擎对现有请求进行投票。
MongoDB 支持部门能否访问我的搜索基础设施和日志?
是的,MongoDB 支持人员可以在专用和共存节点上访问 Atlas Search 基础架构,也可以从这些节点下载 mongot
日志。但是,您可以在组织级别阻止对 MongoDB 支持的访问,然后根据需要授予对 MongoDB 支持的访问权限 24 小时。要了解更多信息,请参阅配置 MongoDB 支持访问 Atlas 后端基础架构。
我可以跨多个集合运行 $search
查询吗?
不行,但您可以使用 $lookup
和 $unionWith
跨多个集合运行搜索查询。要了解更多信息,请参阅如何跨集合运行 Atlas Search 查询。