Elasticsearch集群由一个或多个节点(服务器)组成,这些节点一起保存Elasticsearch的所有数据,并提供跨所有节点的联合索引和搜索功能。集群由一个唯一的名称来标识,该名称默认为“elasticsearch”(可以在配置文件中修改)。当某个节点被设置为相同的集群名称时,该节点才能加入集群。因此,如果有多个集群,需要确保每个集群的名称不能重复。

Elasticsearch中的每个索引都包含多个分片,分布在不同的节点上。每个分片都是一个最小工作单元,承载部分数据,并且具有完整的建立索引(当分片中的文档被修改后,需要重新对文档进行索引)和数据处理能力。

Elasticsearch中的每个文档只能存储在一个主分片及其对应的副本分片中,即同一个文档不会存储在多个主分片中。

Elasticsearch的集群架构如图所示,其中P0、P1、P2为主分片,R0、R1、R2分别为与主分片相对应的副本分片。

Elasticsearch集群任意一个节点都可以接收客户端的请求,且每个节点都知道任意一个文档所在集群中的位置。

1.文档写入流程

当向集群写入文档时,系统首先会将文档写入到主分片中࿰