对于索引,当每个文档未嵌套在另一个文档中时, MongoDB Search 将其计为单个索引对象。对于嵌入式文档, MongoDB Search 根据嵌套级别数将每个嵌入式文档计为附加索引对象。MongoDB Search 停止复制大于 2、100、000、000索引对象的索引更改。
如果在单独的搜索节点上部署了MongoDB搜索,则可以通过对索引分区来增加MongoDB搜索索引对象的数量。默认下, MongoDB Search 支持每个分片一个分区。每个分区最多支持 2 十亿个索引对象。通过使用 numPartitions 选项,您可以创建最多具有四个 (4) 个分区的索引。这些分区表示单个索引,每个集群或分片最多支持8B 个文档。
为索引配置分区时, MongoDB Search 会自动以最佳方式在分区之间分配索引对象。当您对具有索引分区的集合运行查询时, MongoDB Search 会将查询分散到所有分区,并收集搜索结果和元数据以对结果进行排序、合并和返回。
我们建议在以下情况下对您的索引进行分区:
您的索引对象已达到总限制的 50%。
集合中的文档数量已达到 20 亿。
您的索引最多将包含 80 亿份文档。
您的索引处于
STALE状态,因为MongoDB Search 已停止复制。
注意
MongoDB主动监控所有搜索索引的文档计数。当搜索索引接近索引对象的上限时, MongoDB可能会调整索引分区的数量以避免超过此限制。这可以防止稳态复制中断,中断会导致数据过时,但可能会增加查询延迟。
当您配置分区或修改分区数量时, MongoDB Search 会触发索引的重建。
如果集群中有多个分区,则无法删除所有搜索节点并迁移到 mongod 和 mongot 进程在同一节点上运行的部署模型。
语法
1 { 2 "numPartitions": <integer> 3 }
支持的值
MongoDB Search numPartitions 选项采用以下值:
1— 创建单个索引,无需额外分区。这是默认值。2— 为最多 40 亿份文档创建最多两个分区。4— 为最多 80 亿个文档创建最多四个分区。
例子
以下索引示例使用 sample_mflix.movies集合演示如何为集合中的数据配置最多 4 个分区。您可以使用Atlas用户界面中的可视化编辑器或 JSON编辑器以及 其他受支持的客户端来创建索引。