ElasticSearch 路由计算

ES学习

第一篇:ElasticSearch 邂逅ES
第二篇:ElasticSearch入门
第三篇:ElasticSearch JavaAPI操作
第四篇:Windows单点和集群配置
第五篇:Linux单点和集群配置
第六篇:ElasticSearch核心概念
第七篇:ElasticSearch系统架构
第八篇:ElasticSearch分布式集群
第九篇:ElasticSearch路由计算

Part5:ElasticSearch进阶

5.4 路由计算

  • 当在ES内创建一个文档的时候,文档会被存储到一个主分片中。ElasticSearch如何判断一个文档应该存放到哪个分片中呢?当创建文档的时候,如何决定这个文档应该被存储在哪个分片呢?ES中决定某个文档应该被存储到哪个分片中是根据如下公式来决定的
    • shard = hash(routing) % number_of_primary_shards
    • routing是一个可变值,默认是文档的_id,也可以设置成一个自定义的值。routing通过hash函数生成一个数字,然后这个数字再除以number_of_primary_shards(主分片数量)
  • 到这里就可以说明为什么在ES创建索引之后就不能修改主分片数量了,因为进行路由计算的时候会使用到主分片数量,如果在创建索引之后,也添加了文档数据,结果把主分片数量改了,那么原先的所有路由值就无效了,文档也找不到了。
  • 所有的文档API(get、index、delete、bulk、update以及mget)都接受一个叫做routing的路由参数,通过这个参数可以自定义文档到分片的映射。一个自定义的路由参数可以用来确保所有相关文档(例如所有属于同一个用户的文档)都被存储到同一个分片中。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值