当前位置: 首页 > news >正文

ES集群的分布式存储

elasticsearc会进行不同的分片,这个时候当我们在不同的分片当中进行数据的新增和删除,为什么我们可以在不同的分片当中查询到相同的结果?

协调节点客户端请求 “调度员 + 结果汇总员”。收到查询、写入等请求后,它会判断需要哪些数据节点参与(比如搜索请求要涉及哪些分片 ),把任务拆分发下去,等各个节点返回部分结果,再汇总合并(如搜索结果排序、分页 ),最后返回给客户端,

当新增文档时,应该保存到不同分片,保证数据均衡,那么coordinating node如何确定数据该存储到哪个分片呢?

elasticsearch会通过hash算法来计算文档应该存储到哪个分片:

shard =hash(_routing) % number_of_shards

说明:

  • routing默认是文档的id

  • 算法与分片数量有关,因此索引库一旦创建,分片数量不能修改!

新增文档的流程:

当我们进行新增文档的时候,会通过新增文档的id值进行hash运算,然后通过运算的值,通过路由找到需要存入分片的节点位置再进行分片的存储,保存过后需要主分片会对自己的从分片进行数据的同步等参与的节点完成复制之后,就会将结果返回给协调节点,再进行返回给客户端,这样的循环下来之后,就会使文档存储到应该存储的分片当中。

当我们不通过文档id来进行数据的查询等:

elasticsearch的查询分成两个阶段:

  • scatter phase:分散阶段,coordinatingnode会把请求分发到每一个分片

  • gather phase:聚集阶段,coordinating node汇总data node的搜索结果,并处理为最终结果集返回给用户

当我们没有数据的id的时候,ES会对每一个节点都进行请求的发送,然后再等所有的节点进行数据的汇总,才会返回给客户端。

相关文章:

  • YOLOv1 技术详解:NMS(非极大值抑制)的工作原理与实现细节
  • Python+TensorFlow:30分钟快速入门AI开发
  • LaViDa:基于扩散模型的多模态大模型,速度超越next-token范式
  • 魔百和网络机顶盒CM211-1硬件解析
  • linux驱动开发(6)-内核虚拟空间管理
  • IGBT开通时间、关断时间、死区时间
  • java复习 09
  • UE5场景漫游——鼠标控制旋转与第一人称漫游
  • 5.4.1树的存储结构
  • 获取Unity节点路径
  • 前端八股文 - JavaScript 篇
  • 【Create my OS】从零编写一个操作系统
  • mesh转solid freecad
  • docker compose的变量使用说明
  • Spring常见面试题
  • PCB比对--CAM Brd文件比对
  • 中文分词总结:历程、问题、发展
  • 【笔记】Blockchain
  • 黑龙江亿林网络启盛裸金属服务器评测:24 核 32G + 联通千兆共享,高负载业务的新利器
  • 68元开启智能硬件新纪元——明远智睿SSD2351开发板引领创新浪潮
  • php网站做cdn/今日新闻头条大事
  • 国内红酒网站建设/河南seo外包
  • 东莞专业做淘宝网站推广/最好的网站优化公司
  • 如何在网站上做自动弹出/石家庄关键词优化软件
  • 餐饮网站网页设计代码/西安网络优化大的公司
  • 泰安有哪些网站/平面设计主要做什么