Elasticsearch(ES)核心知识点

Elasticsearch(ES)核心知识点


1. 核心概念

  • Document:文档,一条数据(JSON)
  • Field:字段,文档里的属性
  • Index:索引,相当于数据库的"库/表"
  • Type:类型,7.x 已废弃,一个索引只对应一类数据
  • Shard(分片):索引切分成多个分片,实现分布式存储与并发
  • Replica(副本):分片的备份,保证高可用、提高查询吞吐量
  • Node:节点,一个 ES 实例
  • Cluster:集群,多个节点组成
  • Master Node:主节点,管理集群元数据、分片分配
  • Data Node:数据节点,存储数据、执行查询
  • Coordinating Node:协调节点,接收请求、分发、聚合结果
  • Segment:段文件,底层最小存储单位,不可变
  • Translog:预写日志,防止宕机丢数据

2. 核心架构原理

  • 索引被分为多个 主分片(Primary Shard)
  • 每个主分片有多个 副本分片(Replica)
  • 读写都走主分片,副本可分担查询
  • 分片均匀分布在不同节点,实现水平扩展

3. 写入流程(极简)

  1. 数据先写 内存缓冲区
  2. 同时写 Translog(防止宕机丢失)
  3. 定时 refresh → 生成 segment,可被搜索
  4. 多次 segment 后台 merge 合并
  5. 定时 flush → 数据落盘,清空 Translog

4. 查询流程(极简)

  1. 请求发给协调节点
  2. 分发到对应分片
  3. 各分片返回匹配结果
  4. 协调节点聚合、排序、分页
  5. 返回最终结果

5. 分词(ES 核心能力)

  • 对文本进行切词,用于全文检索
  • 中文必须用:IK 分词器
    • ik_max_word:最细粒度拆分
    • ik_smart:粗粒度拆分

6. 高可用机制

  • 多节点 + 分片副本
  • 某个节点挂掉:
    • 对应分片的副本自动提升为主分片
    • 集群自动 rebalance
  • 无单点故障

7. 数据可靠性(防丢)

  • Translog 保证写入不丢失
  • 副本机制保证硬件故障不丢
  • 底层基于 Lucene,持久化安全

8. 常见查询类型

  • match:全文检索(分词后匹配)
  • term:精确匹配(不分词)
  • match_phrase:短语匹配
  • range:范围查询
  • bool:组合查询(must / should / must_not / filter)
  • aggregation:聚合分析(分组、统计、去重)

9. 深度分页问题

  • from + size 过大会深度翻页,性能极差
  • 解决方案:
    • search_after(推荐,生产用)
    • scroll`(适合大量导出)

10. 写入优化

  • 批量写入:bulk
  • 关闭刷新:加大 refresh_interval
  • 副本数调为 0 后再恢复
  • 合理设置分片数

11. 查询优化

  • 避免 * 前缀模糊查询
  • 使用 filter 代替 query(不算分,缓存友好)
  • 字段设置合理类型(keyword 不分词)
  • 避免大结果集返回
  • 利用路由(routing)定位分片

12. 脑裂问题(老生常谈)

  • 原因:网络问题导致多个节点选主

  • 解决:

    复制代码
    discovery.zen.minimum_master_nodes: (master节点数/2)+1

    新版已内置更好的选举机制,基本不会出现。


13. 典型应用场景

  • 搜索引擎(商城、APP 搜索)
  • 日志分析(ELK)
  • 用户行为分析
  • 地理信息检索(附近的店)
  • 报表聚合统计

14. 一句话背诵版

  • 分片实现分布式,副本实现高可用
  • 写入靠translog防丢,查询靠分词提速
  • 全文检索用match,精确匹配用term
  • 深度分页用search_after
  • 大查询用filter,小结果用must

相关推荐
Java后端的Ai之路2 小时前
3 天从入门到可视化监控:Elasticsearch 新手实战指南
大数据·数据库·elasticsearch·搜索引擎·向量数据库
飘忽不定的bug2 小时前
RK3588 linux+rtos(mcu)串口适配
linux·单片机·elasticsearch
源码之家2 小时前
计算机毕业设计:Python地铁数据可视化分析系统 Flask框架 数据分析 可视化 高德地图 数据挖掘 机器学习 爬虫(建议收藏)✅
大数据·python·信息可视化·数据挖掘·flask·汽车·课程设计
2501_9209538610 小时前
工业4.0时代,制造企业精益管理咨询的标准化实施步骤
大数据·人工智能·制造
landowei13 小时前
2026年最好用的网盘资源搜索引擎推荐:来搜盘实测体验
搜索引擎
forestsea13 小时前
Elasticsearch 集群、Kibana和IK分词器:最新版 9.3.2 手动安装教程
大数据·elasticsearch·搜索引擎
Cx330❀13 小时前
一文吃透Linux System V共享内存:原理+实操+避坑指南
大数据·linux·运维·服务器·人工智能
木子ee13 小时前
LLM×MapReduce: Simplified Long-Sequence Processing using Large Language Models
大数据·语言模型·mapreduce
tryCbest13 小时前
Elasticsearch 知识详解及解析
elasticsearch·搜索引擎