Elasticsearch采用多Shard方式,通过配置routing规则将数据分成多个数据子集,每个数据子集提供独立的索引和搜索功能。当写入文档的时候,根据routing规则,将文档发送给特定Shard中建立索引。这样就能实现分布式了。 以下是Elasticsearch单个文档的写入简单流程。
1、数据写入的简单流程

以下是写单个文档所需的步骤:
1、客户端向 NODE I 发送写请求。
2、检查Active的Shard数。
3、NODEI 使用文档 ID 来确定文档属于分片 0,通过集群状态中的内容路由表信息获知分片 0 的主分片位于 NODE3 ,因此请求被转发到 NODE3 上。
4、NODE3 上的主分片执行写操作 。 如果写入成功,则它将请求并行转发到 NODE I 和
NODE2 的副分片上,等待返回结果 。当所有的副分片都报告成功, NODE3 将向协调节点报告
成功,协调节点再向客户端报告成功 。
5、在客户端收到成功响应时 ,意味着写操作已经在主分片和所有副分片都执行完成。
2、索引与分片的关系
分片是一个底层的 工作单元,一个分片是一个 Lucene 的实例,它本身就是一个完整的搜索引擎,文档不会跨分片存储。
索引与分片的关系图:


最低0.47元/天 解锁文章
2831

被折叠的 条评论
为什么被折叠?



