Elasticsearch之下

上一篇上一篇

🛡️ 第六幕:集群容灾与扩展

1. 脑裂(Split Brain)

  • 网络分区 → 多个 Master 同时存在 → 数据写坏
  • 对策
    • discovery.zen.minimum_master_nodes = (master_eligible_nodes / 2) + 1(7.x 前)
    • 7.x+ 用 Raft,自动防脑裂

场景:某台服务器宕机

  • 如果挂的是 Data Node
    • Primary Shard 挂了?→ 自动提升 Replica 为 Primary
    • 集群状态变 Yellow(副本缺失),但服务不中断
  • 如果挂的是 Master Node
    • 其他 Master-eligible 节点自动选举新老大(基于 Zen Discovery 或新版 Raft)

如何扩容?

  • 加机器 → 自动加入集群
  • 索引分片会自动 rebalance(数据迁移)
  • 查询自动路由到新节点 → 无缝扩展

💡 最佳实践

  • 至少 3 个 Master 节点(防脑裂)
  • Data 节点按角色分离(hot-warm-cold 架构)

第七幕:调优与问题

瓶颈 优化手段
Refresh 太频繁 refresh_interval: 30s
Translog 同步太勤 translog.durability: async
副本太多 写入时设 replicas: 0,写完再加
Bulk 太小 单次 Bulk 5--15MB(约 1000--5000 docs)
Mapping 动态膨胀 关闭 dynamic: strict

1. 慢查询雪崩

  • 一个复杂聚合占满 CPU → 其他查询排队 → 集群 hang
  • 对策
    • search.default_search_timeout(超时熔断)
    • indices.breaker.*(内存熔断)
    • 监控 thread_pool.search.rejected

2. Field Data 爆炸

  • text 字段做聚合 → 加载到堆内存(Field Data)
  • 对策永远不要对 text 做聚合!用 keyword

3.极限写入架构:

Logstash/Filebeat → Kafka → Spark/Flink → ES Bulk Write

  • 中间加消息队列削峰
  • Flink 做窗口聚合,减少 ES 写入量

🚫 ES 对 JVM 的特殊要求:

  • 堆内存 ≤ 32GB(否则指针压缩失效,内存翻倍)
  • 堆内存 ≤ 物理内存 50%(留一半给 OS Page Cache)
  • 禁用 Swapbootstrap.memory_lock: true
区域 用途 调优建议
Heap 存储查询上下文、聚合中间结果 ≤ 31GB,G1GC
Page Cache 缓存 Segment 文件 越大越好(靠 OS 管理)
Translog 事务日志 SSD 必备
场景 为什么不适合 正确姿势
强事务 ES 不支持 ACID 用 MySQL,ES 只做搜索同步
频繁更新 更新 = 删除+重建,性能差 少量更新 or 用 _update 脚本
大宽表 JOIN 不支持 JOIN 用 Nested / Parent-Child(慎用)或应用层关联
精确计数(10亿级) total: 10000+ 是估算 track_total_hits=true(性能代价大)

记住
ES 是"搜索加速器",不是"主数据库"

🎯 终极总结

原则 实现 目的
不可变性 Immutable Segments 高并发、缓存友好
近实时 Refresh + Translog 写入吞吐 vs 可见性平衡
列存聚合 Doc Values 高效 BI 分析
分片自治 Shard = Lucene Index 水平扩展
协调解耦 Coordinating Node 无状态,易扩展

ES 不是银弹,而是一套精密的权衡系统

  • 空间换时间(Doc Values + 副本)
  • 延迟换吞吐(Refresh 间隔)
  • 复杂度换能力(分布式协调)

真正的大神,不是会用 ES,而是知道什么时候不该用 ES

超能力 技术实现 效果
闪电搜索 倒排索引 + 分词 毫秒级全文检索
横向扩展 分片 + 集群 PB 级数据轻松扛
高可用 副本 + 自动故障转移 节点挂了照常工作
智能分析 聚合 + Doc Values 实时 BI 报表
近实时 Refresh + Translog 写入1秒可见,不丢数据

"如果你还在用 LIKE %keyword% 做搜索,那你不是在查数据,你是在给用户表演'系统正在思考人生'。"

相关推荐
大模型码小白9 小时前
【Python零基础教程】继承、多态与魔法函数:面向对象编程三大核心特性详解
java·大数据·开发语言·人工智能·python·ai编程
阿里云大数据AI技术11 小时前
更快、更稳、更省:揭秘阿里云 Elasticsearch 存算分离与弹性扩缩
elasticsearch
延凡科技12 小时前
多场景落地复盘:端边云架构无人机智能巡检系统设计与实践
大数据·数据结构·人工智能·科技·架构·无人机·能源
ifenxi爱分析13 小时前
爱分析最新报告解读:AI数据基础设施与数据中台的区别
大数据·人工智能
阿里云大数据AI技术13 小时前
Search Lake:ES x Paimon 让湖上多模态数据可搜可用
人工智能·elasticsearch·搜索引擎
品牌全球行13 小时前
共商共建共享 链接数字未来——“一带一路数字新城(深圳)会客厅筹备办”揭牌仪式在深圳隆重举行
大数据·人工智能
TlSfoward15 小时前
抓包代理链路下的 TLS 指纹变化分析 TLSFOWARD抓包工具
数据库·爬虫·网络协议·搜索引擎·php
数智化管理手记15 小时前
账龄分析手工统计易遗漏?自动账龄分析工具怎么搭建
大数据·网络·数据库·人工智能·数据挖掘
LaughingZhu16 小时前
Product Hunt 每日热榜 | 2026-07-21
搜索引擎·百度
RD_daoyi16 小时前
外链权重暴跌至13%,品牌提及反超传统链接——2026年不做Digital PR,你的独立站等于隐形
运维·网络·学习·机器学习·搜索引擎