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