Elasticsearch集群时增删改查是如何实现的?
本文不介绍ES API的如何使用,而是简单记录一下从一个请求发出后,elasticsearch服务器上的各个节点(或分片)是如何进行工作的。
Elasticsearch分布式集群
(图片来自网络)
首先了解一下es集群中三个名词:
cluster(集群):
一个节点(node)就是一个elasticsearch实例;一个集群可有一个或多个节点,他们的cluster.name相同,
集群中有一个节点会选举为主节点(master),他将管理集群级别的一些变更,例如新建或删除索引,新建或移除节点等。
主节点不会参与文档(document)级别的变更,所以主节点不会成为集群流量上的瓶颈。任何节点都可以成为主节点但主节点只有一个。
集群健康:GET /_cluster/health
green:所有主分片和复制分片都可用(上图中的集群就处于green的状态,因为32个主副分片都可用)
yellow:所有主分片都可用,不是所有的复制分片都可用
red:不是所有的主分片都可用。
node(节点):
上图中的es-node2就是主节点,负责与用户之间的请求,并管理索引或节点变更。
shards(分片):
一个分片就是es工作的最小单位,索引(index)只是一个指向一个或多个分片的“逻辑名称”,分片就是一个Lucene实例,是一个完整的搜索引擎,分片可以分为主分片(primary shard)和复制分片(replica shard),索引中的每一个文档都属于一个单独的主分片(也就是一个文档不