详细描述一下 Elasticsearch 索引文档的过程 ?
2024-09-07 16:33:05
面试官:想了解 ES 的底层原理,不再只关注业务层面了。
解答:
这里的索引文档应该理解为文档写入 ES,创建索引的过程。
文档写入包含:单文档写入和批量 bulk 写入,这里只解释一下:单文档写入流程。
记住官方文档中的这个图。
第一步:客户写集群某节点写入数据,发送请求。(如果没有指定路由/协调节点,
请求的节点扮演路由节点的角色。)第二步:节点 1 接受到请求后,使用文档_id 来确定文档属于分片 0。请求会被转
到另外的节点,假定节点 3。因此分片 0 的主分片分配到节点 3 上。
第三步:节点 3 在主分片上执行写操作,如果成功,则将请求并行转发到节点 1
和节点 2 的副本分片上,等待结果返回。所有的副本分片都报告成功,节点 3 将
向协调节点(节点 1)报告成功,节点 1 向请求客户端报告写入成功。
如果面试官再问:第二步中的文档获取分片的过程?
回答:借助路由算法获取,路由算法就是根据路由和文档 id 计算目标的分片 id 的
过程。
1shard = hash(_routing) % (num_of_primary_shards)
最新文章
- Nancy之基于Nancy.Hosting.Aspnet的小Demo
- SAP SD 销售凭证如何设置字段必填
- Linux 驱动学习笔记05--字符驱动实例,实现一个共享内存设备的驱动
- C++11模板类使用心得
- web工作流
- position置顶或某固定位置 兼容ie6ie7
- 聊一下JS中的作用域scope和闭包closure
- The listener supports no services解决一例
- Maven学习之 仓库镜像
- android:id=";@+id/button1"; 与 android:id=";@id/button1"; 区别 @string
- Linux系统文件的隐藏属性
- Java的类演进过程
- android报表图形引擎(AChartEngine)demo解析与源码
- mapreduce: 揭秘InputFormat--掌控Map Reduce任务执行的利器
- OJ常见问题及必须认识的对拍处理水题
- Swift UI开发初探
- Swift - 创建代理协议实现页面间参数传递和方法调用
- ActionBarActivity: cannot be resolved to a type
- AB PLC教程
- Intellij IDEA 导入Maven项目
热门文章
- java中的interface(接口)
- Understanding JSON Schema
- 【信而泰】网络损伤仿真,为5G应用保驾护航
- 【C#表达式树 七】 反射在表达式树中的应用 ListInitExpression
- javascript中逻辑运算符&;&;和||的返回值问题
- Oracle ASM 磁盘组基础知识整理(收藏版)
- maven通用镜像设置
- LeetCode-074-搜索二维矩阵
- PhpStrom 常用的插件
- Linux开机自启应用&;开机执行脚本&;监听端口应用挂掉了执行启动脚本