Elasticsearch路由算法

来源:互联网 发布:览物之情得无异乎的互 编辑:程序博客网 时间:2024/06/04 23:11

document创建的时候路由就需要决定放在哪个shard  一个document只能存在于一个shard上


路由算法:shard = hash(routing) % number_of_primary_shards


举例

一个index有3个primary shard,P0,P1,P2
每次增删改查一个document的时候,都会带过来一个routing number(默认就是这个document的_id(可能是手动指定,也可能是自动生成)
routing = _id,假设_id=1

会将这个routing值,传入一个hash函数中,产出一个routing值的hash值,hash(routing) = 21
然后将hash函数产出的值对这个index的primary shard的数量求余数,21 % 3 = 0
就决定了,这个document就放在P0上。


决定一个document在哪个shard上,最重要的一个值就是routing值,默认是_id,也可以手动指定,相同的routing值,每次过来,从hash函数中,产出的hash值一定是相同的
无论hash值是几,无论是什么数字,对number_of_primary_shards求余数,结果一定是在0~number_of_primary_shards-1之间这个范围内的。0,1,2。


默认的routing就是_id
也可以在发送请求的时候,手动指定一个routing value,比如说put /index/type/id?routing=user_id

手动指定routing value是很有用的,可以保证说,某一类document一定被路由到一个shard上去,那么在后续进行应用级别的负载均衡,以及提升批量读取的性能的时候,是很有帮助的

因为路由公式决定  导致primary shard数量不可变  如果可变  就会导致找不到数据

阅读全文
'); })();
0 0
原创粉丝点击
热门IT博客
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 扇贝烧烤 扇贝水饺 扇贝边批发 扇贝怎么 扇贝软件 芝士扇贝 韭菜炒扇贝 扇贝单词app 烧烤扇贝香 扇贝饺子 扇贝粥 扇贝什么 扇贝和生蚝 扇贝 app 扇贝的种类 扇贝好处 扇贝柱批发 鲜扇贝价格 红烧扇贝 扇贝清理 蒜蓉粉丝蒸扇贝 扇贝肉怎么清洗 扇贝粉丝蒜蓉做法 扇贝肉怎么做好吃 扇贝蒸多长时间 扇贝家常做法 扇贝什么意思 蒜蓉扇贝做法 速冻扇贝肉家常做法 扇贝是女人哪里 扇贝是什么意思 扇贝怎么做好吃 蒸扇贝需要几分钟 扇贝怎么清洗 扇贝做法大全 扇贝营养价值 扇贝搏击手什么意思 蒸扇贝几分钟 孕妇可以吃扇贝吗 葱姜炒扇贝肉 冷冻扇贝肉怎么清洗图