elasticsearch 分片和副本

一.分片

  分片包括主分片和副本分片,主分片的数量在创建索引时就固定下来了,无法更改主分片数量。

1.es的分片是使用在索引上,数据量少的建议使用1个分片,每个分片最好不超过30GB。你认为你的数据能达到200GB, 我们推荐你最多分配7到8个分片。

2.过多的分片也需要额外的成本:
  1)每个分片本质上就是一个Lucene索引, 因此会消耗相应的文件句柄, 内存和CPU资源。
  2)每个搜索请求会调度到索引的每个分片中. 如果分片分散在不同的节点倒是问题不太. 但当分片开始竞争相同的硬件资源时, 性能便会逐步下降。
  3)ES使用词频统计来计算相关性. 当然这些统计也会分配到各个分片上. 如果在大量分片上只维护了很少的数据, 则将导致最终的文档相关性较差。

3.不要现在就为你可能在三年后才能达到的10TB数据做过多分配. 如果真到那一天, 你也会很早感知到性能变化的。

4.较大的分片在失败后需要更长的时间才能恢复。当一个节点发生故障时,Elasticsearch 会在数据层的剩余节点之

间重新平衡该节点的分片。此恢复过程通常涉及通过网络复制分片内容,因此 100GB 分片的恢复时间是 50GB 分片的两倍。查询语句:GET _cat/shards?v=true&h=index,prirep,shard,store&s=prirep,store&bytes=gb

5.避免大量碎片问题。一个节点可以容纳的分片数量与可用的堆空间成正比。作为一般规则,每 GB 堆空间的分片数应小于 20。 例如:一个节点的堆为4G, 分片数量应小于80个。

6.集群环境下,查询索引的主节点和副本节点分配情况

GET /_cat/shards/product_specification?v=true

   P是主节点,R是副本节点

    

   下面索引是创建了6个分片,和每个分片对应的一个副本, 分别分配到了不同节点,就算down掉一个节点,也能保证正常运行

   下面是没有集群的ES,副本没有分配,如下所示:

二.副本

  1. 副本提供数据的冗余,副本以防止硬件故障并增加处理读取请求(如搜索或检索文档)

  2.索引中主分片的数量在创建索引时是固定的,但副本分片的数量可以随时更改,而不会中断索引或查询操作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值