一、节点 (Node)
节点是 Elasticsearch 实例的运行实例,即一个独立的 Elasticsearch 服务进程。每个节点都是一个独立的工作单元,负责存储数据、参与数据处理(如索引、搜索、聚合等)以及参与集群的协调工作。节点可以在物理或虚拟机上单独部署,也可以在同一台机器上运行多个节点(但需注意资源分配)。
节点具有以下特性:
-
角色:节点可以承担多种角色,包括但不限于:
- 主节点 (Master Node):负责集群范围内的元数据管理和变更,如索引创建、删除、分片分配等。
- 数据节点 (Data Node):存储实际数据和相关的索引文件,参与数据的索引、搜索和恢复过程。
- 协调节点 (Coordinating Node):接收客户端请求,将请求路由至适当的节点,并将结果汇总返回给客户端。每个节点都可以充当协调节点,也可以专门设置某些节点仅作为协调节点。
- ingest 节点:处理预定义的中间件管道,对数据进行预处理后再索引。
-
配置:节点通过配置文件或启动参数(如
-E node.name
、-E node.roles
等)定义其名称、角色、网络绑定等属性。
二、集群 (Cluster)
集群是由一个或多个节点组成的 Elasticsearch 实例集合,它们协同工作,对外表现为单一的搜索和索引服务。集群中的节点通过共享相同的集群名称 (cluster.name
) 自动发现彼此并形成集群。
集群的主要特性包括:
- 一致性:集群内部维护数据的一致性,确保在任何节点上都能获得一致的查询结果。
- 故障转移:当某个节点失效时,集群通过自动重新分配分片和选举新的主节点来维持服务的连续性。
- 负载均衡:客户端请求可以被路由到集群中的任意节点,节点间的负载得以均衡。
三、分片 (Shard)
分片是索引内部数据的逻辑分割单元。每个索引可以被划分为多个分片,每个分片都是一个完整的 Lucene 索引,包含索引的一部分数据。
分片的主要作用和特性包括:
- 水平扩展:通过增加分片数量,将大量数据分散存储在多个节点上,实现数据的水平扩展和查询性能的提升。
- 数据分布:每个分片可以被分配到集群中的任意节点,Elasticsearch 自动管理分片的分布和平衡。
- 数据量限制:单个分片有大小限制,合理的分片数量有助于避免单一分片过大导致的性能下降。
四、副本 (Replica)
副本是对主分片的完整复制。每个主分片可以有零个或多个对应的副本分片。副本分片的存在有以下几个重要作用:文章来源:https://www.toymoban.com/news/detail-859994.html
- 数据冗余:副本分片提供了数据的备份,防止主分片数据丢失导致的数据不可用。
- 高可用性:当主分片不可用时,其对应的副本分片可以被提升为新的主分片,确保服务连续性。
- 读取性能:副本分片可以分摊查询请求,尤其在只读操作(如搜索)中,显著提高查询响应速度。
五、分片与副本的关系
一个索引由多个主分片和对应的副本分片组成。例如,若一个索引配置了 5 个主分片和每个主分片有 1 个副本,则该索引总共有 10 个分片(5 个主分片 + 5 个副本分片)。这些分片会在集群的节点间进行动态分配和平衡。文章来源地址https://www.toymoban.com/news/detail-859994.html
六、管理与监控
- 分片分配:通过 Elasticsearch API 或可视化工具(如 Kibana)可以查看分片在节点间的分布情况,以及手动调整分片分配策略。
-
健康检查:集群健康状态 (
cluster health
) 可以反映分片的健康状况,包括主分片和副本分片是否可用、是否在正确数量的节点上分布等。 - 监控:监控分片和副本的状态、数据同步情况、节点负载等指标,有助于及时发现并解决问题,保持集群稳定运行。
到了这里,关于Elasticsearch 的节点、集群、分片和副本 全面解析的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!