elasticsearch分片shard

类似于mysql中的分表

当一个索引存储了大量的数据之后,单节点的磁盘空间不足,且会导致处理搜索请求响应变慢。为了解决这个问题,elasticsearch提供了将索引划分成多份的能力,每一份就称为分片。

在创建索引的时候就可以指定分片的数量。

每个分片本身也是一个功能完善并且独立的"索引",且这个"索引"可以被放置到集群中的任何节点上。

分片的重要性:

  • 允许你水平分割/扩展你的内容容量
  • 允许你在分片之上进行分布式的、并行的操作,进而提供性能/吞吐量

当你查询的索引分布在多个分片上时,ES会把查询发送给每个相关的分片,并将结果组合在一起,而应用程序并不知道分片的存在。

elasticsearch副本replia

同其他关系型数据库或非关系型数据库一样,系统在运行期间因为不可预知的因素导致的数据丢失等因素。

为防止这种情况,elasticsearch允许你创建分片的一份或者多份拷贝,这些拷贝操作叫做复制分片(副本)

副本的重要性:

  • 在分片/节点失败的情况下,提供了高可用性。注意:副本不能与原/主要(original/primary)分片置于同一节点上
  • 扩展搜索量/吞吐量,因为搜索可以在所有的副本上并行运行
总结

总之,每个索引可以被分成多个分片。每个分片可以有0个或者多个副本。

一旦复制了,索引就会有主分片(作为复制源的源分片)和复制分片(主分片的拷贝)的区别。分片和副本的数量可以在创建索引的时候指定。但在创建索引后,可以动态的修改副本的数量,但不能改变分片的数量

默认情况下,elasticsearch中的每个索引会有一个主分片和副本分片

分片与副本的区别在于:

当分片设置为5时,elasticsearch就会把存储数据均衡的分配到5个分片上,当进行查询时,elasticsearch会把查询发送到每个分片上,并将结果组合在一起

而副本,就是对这个5个分片的一种复制。分片是对数据的一种分割,总的数据依旧只有一份,这样可以保证查询的高效性,副本则是复制多份分片的数据,这样可以保证数据的高可靠性,防止数据丢失。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐