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