(39)ElasticSearch文档数据路由原理

  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