Elasticsearch 知识体系概览
Elasticsearch 是什么
Elasticsearch 是基于 Apache Lucene 的 分布式搜索和分析引擎。它提供了近实时(Near Real-Time, NRT)的全文搜索、结构化搜索、分析和聚合能力,是目前最主流的搜索引擎解决方案。
核心特点
| 特性 | 说明 |
|---|---|
| 倒排索引 | 基于 Lucene 的倒排索引,全文搜索极快 |
| 分布式 | 自动分片和副本,水平扩展 |
| 近实时 | 文档索引后约 1 秒可搜索(refresh_interval) |
| RESTful API | 所有操作通过 HTTP JSON 接口 |
| Schema 灵活 | 支持动态映射,也可精确定义 Mapping |
| 丰富聚合 | 桶聚合、度量聚合、管道聚合 |
Elasticsearch vs 关系型数据库概念映射
| 关系型 | Elasticsearch | 说明 |
|---|---|---|
| Database | Index | 索引(类似数据库) |
| Table | Type(7.x 废弃) | 8.x 起一个 Index = 一个 Type |
| Row | Document | 文档 |
| Column | Field | 字段 |
| Schema | Mapping | 映射(字段类型定义) |
| SQL | Query DSL | JSON 查询语言 |
| Index | 倒排索引(自动) | 所有字段默认建倒排索引 |
为什么面试要考 Elasticsearch
- 搜索核心:几乎所有有搜索功能的系统都使用 ES(电商、日志、内容平台)
- 倒排索引:理解倒排索引是理解搜索引擎原理的基础
- 分布式概念:分片、副本、一致性等概念在 ES 中有典型实现
- 与关系型互补:ES 通常和 MySQL/PostgreSQL 配合使用,理解它们的分工很重要
知识体系总览
核心知识点
1. 倒排索引
倒排索引是 ES 高效全文搜索的基石。关系型数据库的 B+ 树索引适合精确匹配,倒排索引适合「包含某个词」的查询。
2. Mapping 与分词
Mapping 定义了文档的字段类型和分词方式,是控制搜索行为的关键。分词器(Analyzer)将文本拆分为词项(Term),决定了搜索粒度。
3. Query DSL
ES 的查询语言是 JSON 格式的 DSL,分为全文查询(模糊匹配)和精确查询(精确匹配),通过 bool 查询组合复杂条件。
4. 聚合分析
ES 的聚合框架可以在搜索结果上做实时统计分析,替代部分数据仓库的功能(如日志分析、指标统计)。
5. 集群架构
ES 的分片和副本机制提供了水平扩展和高可用能力。理解写入流程、搜索流程和分片分配策略是优化的基础。
6. ELK 生态
ES 通常与 Logstash(数据管道)、Kibana(可视化)、Beats(轻量采集器)组成 ELK Stack,构建完整的日志和搜索平台。
面试重点与高频考点
面试核心
- 倒排索引原理:正排 vs 倒排,TF-IDF / BM25 相关性算分
- 分词器:Standard、IK 中文分词、自定义分词
- Query DSL:match vs term、bool 查询、过滤 vs 查询
- 写入与搜索流程:refresh、flush、translog、segment merge
- 分片策略:分片数选择、路由、rebalance
- ES vs 关系型数据库:各自适用场景,数据同步方案