软考高级系统架构师之ElasticSearch篇
2026/6/10 7:00:25 网站建设 项目流程

📌 一、Elasticsearch 是什么?

一句话定义:Elasticsearch 是基于 Lucene 的分布式、RESTful 风格的搜索与分析引擎。

核心定位:全文检索、实时数据分析、日志处理、APM 监控,是 ELK/Elastic Stack 的核心组件。

系统架构师学习平台(点击这里进入)

💡 简单理解:ES 就是一个“超级搜索引擎 + 大数据实时分析平台”,能对 GB 到 PB 级数据进行毫秒级查询。

📚 二、核心概念 (对比关系型数据库)

Relational DBElasticsearch说明
Database (数据库)Index (索引)索引是文档的容器,类似库
Table (表)Type (类型) 已废弃7.x 后移除,统一用 _doc
Row (行)Document (文档)JSON 格式,基本数据单元
Column (列)Field (字段)支持多种数据类型
Schema (约束)Mapping (映射)定义字段类型、分词器等
SQLDSL (Query DSL)JSON 风格的查询语言

⚙️ 分片 (Shard) & 副本 (Replica)

🏗️ 三、集群架构 & 写入流程

🔹 节点角色

📥 文档写入流程 (近实时 NRT)

🚀 ES 不是实时搜索,而是近实时 (NRT),默认 1 秒延迟。可手动 refresh 或调整 refresh_interval。

🔍 四、倒排索引 (Inverted Index) —— ES 快的根本

正排索引:文档 → 关键词。倒排索引:关键词 → 文档列表 (Posting List)。

查询时:分词 → 查 Term Index → 读 Posting List → 合并结果 → 打分排序。

✂️ 五、分词器 (Analyzer) 与中文搜索

分词器由三部分组成:Character FilterTokenizerToken Filter

📖 中文搜索必须使用 ik 分词器,否则会按单字切分,效果极差。

⚡ 六、强大的查询 DSL & 聚合分析

🔹 常用查询类型

📊 聚合分析 (Aggregation) —— 替代 SQL GROUP BY

🌐 七、高可用与水平扩展

💡 生产建议:节点数 ≥ 3,副本数 ≥ 1,避免脑裂。配置 discovery.seed_hosts 和 cluster.initial_master_nodes。

📊 八、ES 对比与选型

对比维度MySQLElasticsearchMongoDB
数据模型表/行/列JSON 文档JSON 文档
索引方式B+Tree倒排索引 + Doc ValuesB-Tree
搜索能力LIKE 模糊,效率低全文检索、相关性打分、高亮文本搜索较弱
聚合分析GROUP BY 有限毫秒级聚合,支持复杂统计聚合管道较慢
实时性强一致近实时 (1s 延迟)强一致
适用场景事务型存储搜索、日志、监控、分析海量文档存储

⚙️ 九、性能优化 & 面试高频点

🚀 写入优化

🔎 查询优化

🔥 常见面试题

📦 十、ELK / Elastic Stack 生态

🎯 一句话总结:ES = 分布式 + 倒排索引 + 近实时 + 聚合分析,是搜索与日志分析领域事实标准。

适用场景:网站搜索、日志分析、监控告警、商品推荐、舆情分析、大数据存储与检索。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询