shard = hash(routing) % number_of_primary_shards决定文档在哪个分片上,routing 是一个可变值,默认是文档的 _id ,也可以设置成一个自定义的值。 routing 通过 hash 函数生成一个数字,然后这个数字再除以 number_of_primary_shards (主分片的数量)后得到 余数 。这个分布在 0 到 number_of_primary_shards-1 之间的余数,就是我们所寻求的文档所在分片的位置。我们要在创建索引的时候就确定好主分片的数量 并且永远不会改变这个数量:因为如果数量变化了,那么所有之前路由的值都会无效,文档也再也找不到了。

相同分片的副本不会放在同一节点,我们可以发送请求到集群中的任一节点。 每个节点都有能力处理任意请求。 每个节点都知道集群中任一文档位置,所以可以直接将请求转发到需要的节点上。处理请求的节点称为协调节点。当发送请求的时候, 为了扩展负载,更好的做法是轮询集群中所有的节点。

新建、索引和删除文档时,节点收到请求会根据ID找到主分片,主分片执行成功后再讲请求发送到副本所在分片。局部更新基于文档的复制时当主分片把更改转发到副本分片时, 它不会转发更新请求。 相反,它转发完整文档的新版本。请记住,这些更改将会异步转发到副本分片,并且不能保证它们以发送它们相同的顺序到达。 如果Elasticsearch仅转发更改请求,则可能以错误的顺序应用更改,导致得到损坏的文档。新建、索引和删除请求都是  操作, 必须在主分片上面完成之后才能被复制到相关的副本分片,consistency 参数的值可以设为 one (只要主分片状态 ok 就允许执行_写_操作),all`(必须要主分片和所有副本分片的状态没问题才允许执行_写_操作), 或 `quorum 。默认值为 quorum , 即大多数的分片副本状态没问题就允许执行_写_操作,数量为int( (primary + number_of_replicas) / 2 ) + 1,如果没有足够的副本分片 Elasticsearch会等待,希望更多的分片出现。默认情况下,它最多等待1分钟。 如果你需要,你可以使用 timeout 参数 使它更早终止: 100 100毫秒,30s 是30秒。新索引默认有 1 个副本分片,这意味着为满足 规定数量 应该 需要两个活动的分片副本。 但是,这些默认的设置会阻止我们在单一节点上做任何事情。为了避免这个问题,要求只有当 number_of_replicas 大于1的时候,规定数量才会执行。

获取文档时,节点收到请求后会根据ID找到文档所在分片,找到文档后再返回给协调节点,在处理读取请求时,协调结点在每次请求的时候都会通过轮询所有的副本分片来达到负载均衡。

bulk时Elasticsearch可以直接读取被网络缓冲区接收的原始数据。 它使用换行符字符来识别和解析小的 action/metadata 行来决定哪个分片应该处理每个请求。这些原始请求会被直接转发到正确的分片。没有冗余的数据复制,没有浪费的数据结构。整个请求尽可能在最小的内存中处理。

最新文章

  1. (1-2)配置的升级 - ASP.NET从MVC5升级到MVC6
  2. Linux的主机规划和磁盘分区
  3. poj 2503:Babelfish(字典树,经典题,字典翻译)
  4. 【转】你真的了解word-wrap和word-break的区别吗?
  5. iOS CoreData 的级联删除等操作
  6. C++ 常用术语(后续补充)
  7. 锋利的jQuery读书笔记---jQuery中动画
  8. Simple Membership 学习笔记
  9. android应用Dialog跳转到Activity
  10. poj2069
  11. IIS部署新网站
  12. Chrome插件触发web页面的事件
  13. 计算一个字符串的每个字符出现的次数案例——Map集合
  14. Jquery弹窗组件
  15. 图像增强算法(直方图均衡化、拉普拉斯、Log、伽马变换)
  16. node之body-parser的使用
  17. oracle 创建表空间 与创建用户与分配用户权限
  18. Centos 安装python3
  19. Java 之 JDBC
  20. mysql数据库访问权限限制设置

热门文章

  1. Flutter-tabbar切換
  2. bzoj1495 [NOI2006]网络收费 复杂度分析+树上背包
  3. C#高级编程(32章)ADO.net
  4. mysql delete from left 多表条件删除
  5. _stdcall
  6. 【Elasticsearch】Elasticsearch索引的创建、查看及修改
  7. Win7隐藏登录界面中的用户(不建议HOME版使用)
  8. Docker问题方案收集
  9. ssd存储的SLC、MLC、TLC闪存芯片颗粒有什么区别?
  10. 《单词的减法》state1~state17(第一遍学习记录)