如何将Solr复合ID路由集合中2000万文档的分片均等拆分为2片?
Solr CompositeId路由集合分片拆分方案
可以直接通过SolrCloud的Collections API实现目标分片的拆分,以下是具体操作步骤:
- 确认兼容性:你的集合采用的CompositeId是SolrCloud默认路由策略,Solr 4.8及以上版本均支持分片拆分操作,无需额外配置。
- 执行拆分命令:使用
SPLITSHARD命令指定要拆分的分片ID,以及拆分后的子分片数量(这里设为2)。示例命令如下:
比如要拆分curl "http://<solr主机地址>:<端口>/solr/admin/collections?action=SPLITSHARD&collection=<你的集合名称>&shard=<待拆分的分片ID>&numSubShards=2"shard1,就将shard参数值设为shard1。 - 拆分逻辑说明:
Solr会基于CompositeId的哈希范围自动拆分目标分片的文档,将原有2000万条文档均匀分配到两个新子分片,最终每个子分片的文档量会接近1000万。拆分过程中原分片仍可正常提供查询服务,完成后新分片会自动加入集群,原分片可按需清理。 - 操作注意事项:
- 确保集群有足够的磁盘、内存资源承载新增分片。
- 拆分前建议备份集合数据,防范意外风险。
- 拆分过程会占用一定系统资源,建议在业务低峰期执行。
内容的提问来源于stack exchange,提问作者user2163880
相关产品推荐
相关产品推荐

