Elasticsearch 面试题
目录

Elasticsearch 中主分片和副本分片的作用是什么?

· 约 2 分钟读完 · 第 31 / 142 章

推荐答案

在 Elasticsearch 中,主分片(Primary Shard)和副本分片(Replica Shard)的作用如下:

  • 主分片:主分片是索引数据的核心存储单元,负责存储和处理数据的读写操作。每个索引在创建时都会被分成多个主分片,这些分片分布在不同的节点上,以实现数据的分布式存储和并行处理。

  • 副本分片:副本分片是主分片的复制品,主要用于提高系统的容错性和查询性能。副本分片可以在主分片不可用时接管请求,确保数据的高可用性。同时,副本分片也可以分担查询请求,提升查询的吞吐量。

本题详细解读

主分片的作用

  1. 数据存储:主分片是索引数据的主要存储单元,每个文档都会被存储在一个特定的主分片中。
  2. 数据写入:所有的写操作(如索引、更新、删除)都会首先在主分片上执行。
  3. 数据分布:主分片分布在不同的节点上,实现数据的分布式存储,从而提高系统的扩展性和容错性。
  4. 并行处理:由于数据分布在多个主分片上,Elasticsearch 可以并行处理多个分片上的数据,提升整体性能。

副本分片的作用

  1. 数据冗余:副本分片是主分片的复制品,确保在主分片发生故障时,数据仍然可用。
  2. 高可用性:当主分片不可用时,副本分片可以接管请求,确保系统的高可用性。
  3. 查询负载均衡:副本分片可以处理查询请求,分担主分片的查询负载,提升查询性能。
  4. 数据恢复:在节点故障或网络分区的情况下,副本分片可以用于数据的恢复和重新平衡。

主分片和副本分片的配置

  • 主分片数量:在创建索引时,主分片的数量是固定的,一旦设置后不能更改(除非重新索引)。
  • 副本分片数量:副本分片的数量可以动态调整,根据系统的需求和负载情况进行配置。

示例

假设我们有一个索引,配置了 5 个主分片和 1 个副本分片。那么,这个索引将会有 5 个主分片和 5 个副本分片,总共 10 个分片。这些分片会分布在集群中的不同节点上,以实现数据的分布式存储和高可用性。

在这个例子中,number_of_shards 设置了主分片的数量为 5,number_of_replicas 设置了每个主分片的副本数量为 1。