十、自定义分片个数

前面ES集群详解说过了ES有主分片跟副本分片,副本分片是主分片的备份,且副本分片数量可以自定义。

目前集群状态,可以看到在没有进行配置的情况下,默认副本分片数是1个,主分片数也是1个

1、默认分片数规则

7.x版本之前默认:5个分片,1个副本分片
7.x版本之后默认:1个分片,1个副本分片

通过前面的实验我们知道,es默认是1个主分片,1个副本分片,副本分片是主分片数据的备份。那么5个分片是怎么回事呢?
5个分片,是将一块数据分成5块,分布在集群各个服务器上。拿linux索引举例,5个分片就是将linux索引数据分为5块,这5块分片总和才是完整的linux索引的数据。

2、自定义副本分片数

通过kibana控制台使用查看命令GET查看默认副本分片数为1
number_of_shards为分片数
number_of_replicas为副本分片数

执行后续的PUT修改命令,将副本数修改为2个,修改后的效果如下图所示

我们可以看到,linux索引的主分片在es03服务器上,es01跟es02服务器放置的是副本分片,即2个副本分片

如果定义成了300个副本会变成什么样呢?
我们把前面提到的number_of_replicas的值修改为300,效果如下图所示

从图可知,2个副本分片在es01跟es02服务器上,还有298个副本分片无家可归,需要再创建298个节点才行,此时的集群颜色为黄色,因为定义的副本分片数跟实际的副本分片数不一致。

3、定义分片数

我们创建一个名为linux76的索引,并定义为3个分片数,0个副本数查看一下效果

效果如下图所示

这时可以发现,linux76索引有3个主分片,分布在es01,es02,es03服务器上,框内数字分别以0,1,2标识。
这是linux76索引数据被分为了3块,分别存放在这三台服务器上了。
对于linux76索引而言,如果这三台机器宕机了一台,数据就不完整了。

修改Linux76索引的副本分片个数,定义为1个

修改后效果如下图所示

这时针对linux76索引而言,宕机了这三台服务器中的任何一台,数据都是完整的,可通过其他服务器上的分片保证数据的完整性。

注意,定义分片数只能在创建索引时定义

4、应用场景

1)根据节点数配置
在2个节点的情况下
默认即可,即1个主分片,1个副本分片

在3个节点的情况下
重要数据:1个主分片,2个副本分片
不重要的数据:1个主分片,1个副本分片

2)根据场景设置
日志收集:1个副本3个分片
搜索功能:2副本3分片

日志收集需要的是写,所以分片数越多越好
搜索功能提供的是读,所以副本数越多效果越好

5、总结

1、副本分片数可以随时修改(即创建索引时,或建立索引后都能修改)
2、索引一旦建立完成,分片数就不能修改了

参考资料
老男孩教育_day105_视频

posted @ 2021-09-01 11:46  努力吧阿团  阅读(200)  评论(0编辑  收藏  举报