面试官:想了解 ES 的底层原理,不再只关注业务层面了。

解答:

这里的索引文档应该理解为文档写入 ES,创建索引的过程。

文档写入包含:单文档写入和批量 bulk 写入,这里只解释一下:单文档写入流程。

记住官方文档中的这个图。

第一步:客户写集群某节点写入数据,发送请求。(如果没有指定路由/协调节点,

请求的节点扮演路由节点的角色。)第二步:节点 1 接受到请求后,使用文档_id 来确定文档属于分片 0。请求会被转

到另外的节点,假定节点 3。因此分片 0 的主分片分配到节点 3 上。

第三步:节点 3 在主分片上执行写操作,如果成功,则将请求并行转发到节点 1

和节点 2 的副本分片上,等待结果返回。所有的副本分片都报告成功,节点 3 将

向协调节点(节点 1)报告成功,节点 1 向请求客户端报告写入成功。

如果面试官再问:第二步中的文档获取分片的过程?

回答:借助路由算法获取,路由算法就是根据路由和文档 id 计算目标的分片 id 的

过程。

1shard = hash(_routing) % (num_of_primary_shards)

最新文章

  1. Nancy之基于Nancy.Hosting.Aspnet的小Demo
  2. SAP SD 销售凭证如何设置字段必填
  3. Linux 驱动学习笔记05--字符驱动实例,实现一个共享内存设备的驱动
  4. C++11模板类使用心得
  5. web工作流
  6. position置顶或某固定位置 兼容ie6ie7
  7. 聊一下JS中的作用域scope和闭包closure
  8. The listener supports no services解决一例
  9. Maven学习之 仓库镜像
  10. android:id="@+id/button1" 与 android:id="@id/button1" 区别 @string
  11. Linux系统文件的隐藏属性
  12. Java的类演进过程
  13. android报表图形引擎(AChartEngine)demo解析与源码
  14. mapreduce: 揭秘InputFormat--掌控Map Reduce任务执行的利器
  15. OJ常见问题及必须认识的对拍处理水题
  16. Swift UI开发初探
  17. Swift - 创建代理协议实现页面间参数传递和方法调用
  18. ActionBarActivity: cannot be resolved to a type
  19. AB PLC教程
  20. Intellij IDEA 导入Maven项目

热门文章

  1. java中的interface(接口)
  2. Understanding JSON Schema
  3. 【信而泰】网络损伤仿真,为5G应用保驾护航
  4. 【C#表达式树 七】 反射在表达式树中的应用 ListInitExpression
  5. javascript中逻辑运算符&&和||的返回值问题
  6. Oracle ASM 磁盘组基础知识整理(收藏版)
  7. maven通用镜像设置
  8. LeetCode-074-搜索二维矩阵
  9. PhpStrom 常用的插件
  10. Linux开机自启应用&开机执行脚本&监听端口应用挂掉了执行启动脚本