十、自定义分片个数
前面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_视频