🎬 HoRain云小助手:个人主页
🔥 个人专栏: 《Linux 系列教程》《c语言教程》
⛺️生活的理想,就是为了理想的生活!
⛳️ 推荐
前些天发现了一个超棒的服务器购买网站,性价比超高,大内存超划算!忍不住分享一下给大家。点击跳转到网站。
专栏介绍
专栏名称 | 专栏介绍 |
本专栏主要撰写C干货内容和编程技巧,让大家从底层了解C,把更多的知识由抽象到简单通俗易懂。 | |
本专栏主要是注重从底层来给大家一步步剖析网络协议的奥秘,一起解密网络协议在运行中协议的基本运行机制! | |
全面深入解析 docker 容器,从基础到进阶,涵盖原理、操作、实践案例,助您精通 docker。 | |
本专栏主要撰写Linux干货内容,从基础到进阶,知识由抽象到简单通俗易懂,帮你从新手小白到扫地僧。 | |
本专栏着重撰写Python相关的干货内容与编程技巧,助力大家从底层去认识Python,将更多复杂的知识由抽象转化为简单易懂的内容。 | |
本专栏主要是发布一些考试和练习题库(涵盖软考、HCIE、HRCE、CCNA等) |
目录
1. 核心概念
1.1 集群(Cluster)
- 定义:由多个节点(Node)组成的逻辑单元,共同存储数据并提供搜索、分析服务。
- 特点:
- 高可用性:节点故障时,数据副本自动接管。
- 水平扩展:通过增加节点扩展存储和计算能力。
1.2 节点(Node)
- 定义:集群中的单个服务器,承担不同角色:
- 主节点(Master Node):管理集群元数据(如索引创建、分片分配)。
- 数据节点(Data Node):存储分片数据,执行搜索和聚合操作。
- 协调节点(Coordinating Node):接收客户端请求,转发到数据节点并汇总结果。
- Ingest 节点:预处理数据(如解析日志)。
1.3 索引(Index)
- 定义:类似数据库中的“表”,是文档的集合。
- 特点:
- 分片(Shard):索引被拆分为多个分片,分布在不同节点(提高性能)。
- 副本(Replica):每个分片的副本,提供冗余和故障恢复。
1.4 分片(Shard)
- 主分片(Primary Shard):数据写入的目标分片,数量在索引创建时固定。
- 副本分片(Replica Shard):主分片的拷贝,可动态调整数量。
1.5 文档(Document)
- 定义:数据的基本单元,以 JSON 格式存储。
- 唯一标识:由
_index
(索引名)、_id
(文档ID)定位。
2. 集群工作原理
2.1 数据写入流程
- 客户端向协调节点发送文档。
- 协调节点通过哈希算法确定目标分片(如
doc_id % 主分片数
)。 - 数据写入主分片后,同步到副本分片。
2.2 搜索流程
- 客户端向协调节点发送查询请求。
- 协调节点将请求转发到所有相关分片(主或副本)。
- 各分片执行查询,返回结果给协调节点汇总。
3. 集群健康状态
通过 GET /_cluster/health
查看:
- Green:所有主分片和副本分片正常。
- Yellow:主分片正常,但部分副本未分配(可能节点不足)。
- Red:有主分片未分配(数据可能丢失)。
4. 集群设计建议
4.1 分片策略
- 主分片数:在创建索引时指定,后续不可修改。建议根据数据量和硬件综合评估(通常每分片 10-50GB)。
- 副本分片数:动态调整,默认1(至少1个副本保证高可用)。
4.2 节点角色分配
- 生产环境:分离主节点和数据节点,避免资源竞争。
# elasticsearch.yml 配置示例 node.master: true # 主节点 node.data: false # 非数据节点
4.3 高可用性
- 最少节点数:主节点数应为奇数(如3、5),避免脑裂(split-brain)。
- 跨机架/可用区部署:防止单点故障。
5. 基本操作示例
5.1 查看集群信息
GET /_cluster/state
GET /_cat/nodes # 查看节点列表
5.2 创建索引
PUT /my_index
{
"settings": {
"number_of_shards": 3,
"number_of_replicas": 1
}
}
5.3 插入文档
POST /my_index/_doc/1
{
"title": "Elasticsearch Guide",
"content": "A beginner's tutorial."
}
5.4 搜索文档
GET /my_index/_search
{
"query": {
"match": { "title": "Elasticsearch" }
}
}
6. 常见问题
6.1 分片过多
- 问题:分片过多会导致元数据膨胀,影响性能。
- 解决:合并小索引或使用
_shrink
API 减少分片。
6.2 节点扩容
- 垂直扩容:升级节点硬件(CPU、内存)。
- 水平扩容:添加新节点,分片自动均衡。
总结
- 集群是 Elasticsearch 实现分布式能力的核心。
- 分片和副本是平衡性能与高可用的关键。
- 合理设计分片数、节点角色和集群拓扑是运维重点。
❤️❤️❤️本人水平有限,如有纰漏,欢迎各位大佬评论批评指正!😄😄😄
💘💘💘如果觉得这篇文对你有帮助的话,也请给个点赞、收藏下吧,非常感谢!👍 👍 👍
🔥🔥🔥Stay Hungry Stay Foolish 道阻且长,行则将至,让我们一起加油吧!🌙🌙🌙