ElasticSeaerch(弹性搜索数据库)中集群、节点、副本和分片的区别

参考:https://my.oschina.net/kenblog/blog/3009800

https://blog.csdn.net/qq_32106647/article/details/99292402

 

简单总结下:

1、集群cluster:

集群顾名思义就是多个相同集群名称的es节点组合在一起。相当于一个集群就是一个班级,班级下面的学生就是节点。

如果只有一个节点在运行就称为单节点。

 

2、节点node:

我们可以简单的理解为一个es运行实例就是一个节点。

当你启动一个es的时候,就运行了一个节点。

备注:其实在实际生产服务器环境部署中,一台服务器只会部署一个es。因为es特别耗cpu和内存,所以多个节点的部署会造成服务器资源抢占,反而降低了es的性能。

 

3、副本replica

副本顾名思义就是主分片primary shard的备份副本,如果主分片有3个,那么一个副本replica就对应有1X3=3个replica shard副本分片。

副本分片数量计算公式 = 副本数量repilca num X 主分片数量primary shard num

一个索引的所有分片数量计算公式=副本数量repilca num X 主分片数量primary shard num + 主分片数量 primary shard num

比如:一个索引有3个主分片,两个副本,那么就有6个副本分片。

一个索引可以创建0-N个副本,es默认创建的副本数量为1。

replica副本就是es高可用和快速响应搜索的关键。

 

4、分片shard:

因为ES是个分布式的搜索引擎, 所以索引通常都会分解成不同部分, 而这些分布在不同节点的数据就是分片,一个分片只存储一部分数据,所有分片加起来就是一个完整的索引数据。

分片分为primary shard主分片和replica副本分片。

必须创建主分片,副本分片可以没有。

一个索引可以创建多个分片数量,es默认创建的就是5个主分片数量,可以根据自己的实际业务确定主分片数量,但是需要注意的是主分片数量一旦确定创建就无法进行修改。

 

5、索引index

索引就类似于关系型数据库的数据库,我们把数据库建立好,然后就把数据存到index中。

一个es(单节点或者集群)可以有很多个索引

 

分片与副本的关系

每个主分片(primary shard)不会和副本分片(replica shard)存在于同一个节点中,有效的保证es的数据高可用性。

例如1:比如一个索引有3个分片和1副本,那么一共就有3*2=6个分片,3个是主分片,3个是副本分片,每个主分片都会对应一个副本分片。

例如2:只有2个节点,但是有3个分片和2个副本,这样的情况就会导致分片无法完全分配,因为主分片和副本分片不能存在于同一个节点中。

 

集群的健康状态

Kibana的Dev Tool 上输入 get _cluster/health

ElasticSeaerch(弹性搜索数据库)中集群、节点、副本和分片的区别

 ElasticSeaerch(弹性搜索数据库)中集群、节点、副本和分片的区别

 

status 说明
green 主分片与副本都正常分片
yellow 主分片全部正常分片,有副本分片未能正常分配
red 有主分片未能正常分配,例如,当服务器的磁盘容量超过85%时,去创建了一个新的索引
上一篇:ElasticSearch里面一些小坑笔记


下一篇:基于Elasticsearch构建千亿流量日志搜索平台实战