Elasticsearch 核心组件与索引机制深度解析
1. 分片与副本基础
在 Elasticsearch 中,分片是存储数据的基本单元,因此在开始时就需要正确规划其大小。分片大小的确定取决于索引要存储的数据量(包括未来的需求)以及可分配给节点的堆内存大小。每个组织在导入数据之前,都必须制定好分片策略,要在数据需求和最佳分片数量之间找到平衡。
一旦索引创建并投入使用,分片数量就不能更改。在创建索引时,Elasticsearch 默认会为其关联一个主分片和一个副本分片(在 7 版本之前,默认是 5 个主分片和 1 个副本分片)。虽然分片数量固定,但可以使用索引设置 API 在索引的生命周期内更改副本数量。文档根据路由算法存储在特定的分片中,算法如下:
shard_number = hash(document_id) % number_of_primary_shards
由于该算法直接依赖于分片数量,在运行过程中更改分片数量会改变当前文档的位置并导致数据损坏,进而影响倒排索引和检索过程。不过,可以通过重新索引来更改分片设置。
2. 节点与集群
当启动 Elasticsearch 时,会启动一个名为节点的实例。每个节点托管一组分片和副本(Apache Lucene 的实例),索引作为存储数据的逻辑集合,会跨这些分片和副本创建。
2.1 单节点集群
首次启动节点时,Elasticsearch 会形成一个新的集群,通常称为单节点集群。单节点集群可用于开发目的,但远不能满足生产级别的需求。在典型的生
超级会员免费看
订阅专栏 解锁全文
556

被折叠的 条评论
为什么被折叠?



