1、文档路由:
一个索引由多个分片构成,当添加(删除,修改)一个文档时,es就需要决定这个文档存储在哪个分片上,这个过程就称为数据路由(routing)。
2、路由算法:
shard=hash(routing) % number_of_primary_shards
示例:一个索引,3个primary shard
(1)每次增删改查时,都有一个routing值,默认是文档的_id的值
(2)对这个routing值使用哈希函数进行计算
(3)计算出的值再和主分片个数取余数,余数肯定在0到(number_of_primary_shards-1)之间,文档就在对应的shard上。routing值默认是文档的_id值,也可以手动指定一个值,手动指定对于负载均衡,以及提高批量读取的性能都有帮助。
3、primary shard个数一旦确定就不能修改了
原文:https://www.cnblogs.com/javasl/p/12643976.html