Elasticsearch(ES)是基于 Lucene 的开源分布式搜索分析引擎。核心能力:毫秒级全文检索、海量日志分析、实时统计。与 MySQL 互补而非替代——MySQL 管事务存储,ES 管搜索分析。
核心定位
- 倒排索引 是搜得快的根本:把文档拆词后建立”关键词 → 文档”映射,避免全表扫描
- 分布式 天生支持:数据自动分片,多节点协同存储与查询
- JSON 文档化:所有数据以 JSON 存储,schema 灵活
核心概念
| ES 概念 | 类比 MySQL | 说明 |
|---|
| Index | 数据库 | 一类相关数据集合(如 products、logs) |
| Document | 一行 | JSON 格式的单条记录 |
| Node | 一台 ES 服务器 | 单台是单节点,多台组成集群 |
| Shard | 数据分片 | 索引拆成多份分布在不同节点 |
| Replica | 数据副本 | 提供高可用与读吞吐 |
三大典型场景
| 场景 | 优势 | 例子 |
|---|
| 全文检索 | 模糊匹配、关键词高亮,比 LIKE 快 10× | 商品搜索、文章搜索 |
| 日志分析 | 写入吞吐高、按时间+关键词秒级定位 | ELK / EFK 日志栈 |
| 实时统计 | 写入 1 秒内可被检索 | 直播弹幕词云、销量排行 |
与 MySQL 的分工
| 维度 | MySQL | ES |
|---|
| 强项 | 事务、精确查询、强一致 | 全文检索、聚合分析、实时统计 |
| 弱项 | 全文检索性能差 | 不支持事务,不能做主存储 |
| 配合方式 | 业务主存储 | 通过 binlog/CDC 同步到 ES 提供搜索 |
入门建议
- 单节点足够入门,不要一上来就部署集群
- 熟悉 REST API 与查询 DSL 比研究底层原理更优先
- ES 不是数据库:核心业务数据始终先写入 MySQL/PG,再同步到 ES
- 写入端用 Logstash / Filebeat / Fluentd / Flink CDC,根据数据形态选择