es集群节点数和分片数关系_elasticsearch 分片(Shards)的理解

elasticsearch 中分片(Shards)非常非常重要,直接和性能挂钩。以下仅为个人实际使用 elasticsearch 4年的理解,可能存在误解,一切以官方文档为准。

分片重要性

Es中所有数据均衡的存储在集群中各个节点的分片中,会影响ES的性能、安全和稳定性, 所以很有必要了解一下它。

分片是什么?

简单来讲就是咱们在ES中所有数据的文件块。 实列场景:

咱们设置了索引A有2个分片,我们向索引A中插入10条数据,那么这10条数据分为5条存储在第一个分片,剩下的5条会存储在另一个分片中。

和主流关系型数据库的表分区的概念有点类似,如果你比较熟悉关系型数据库的话。

分片的设置

创建Mapping的设置(curl) PUT indexName { "settings": { "number_of_shards": 5 } } 注意

1、默认索引是5个分片

2、分片一定设置是不可以修改的,只能新建新索引解决

分片个数(数据节点计算)

分片个数是越多越好还是越少越好了?这个问题是根据数据量决定的,正确来说是根据数据入Es后文件大小决定的。 实列场景:

如果索引A总文件大小是300G,改怎么定制方案了?

建议:(仅参考)

1、保证每一个分片数据大小在30GB左右

2、每一个节点最多存放一个分片

3、节点数大于等于分片数

根据建议,至少需要十个分片。

结果: 建10个数据节点,Mapping 指定分片数为 10,满足每一个节点一个分片,每一个分片大小30G


版权声明:本文为weixin_32802111原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。