当前位置: 首页 > news >正文

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

http://www.cnnetsun.cn/news/1679513.html

相关文章:

  • Air8101 WiFi SoC规格与开发环境配置指南
  • BUUCTF--[RoarCTF 2019]Easy Java
  • Anaconda遇到的若干问题
  • c++编程:D进制的A+B(1022-PAT乙级)
  • OpenClaw技能市场:Top10 Qwen3.5-9B实用插件推荐
  • 前端手写电子签系统实战:SVG为何是合同图片合成的最优解
  • 计算机毕业设计:Python全国地铁数据可视化分析平台 Flask框架 数据分析 可视化 高德地图 数据挖掘 机器学习 爬虫(建议收藏)✅
  • FDTD复现圆偏振超透镜:一场光学与代码的奇妙碰撞
  • 【前端面试必备】前端20道高频面试题及答案详解,含扫码登录、秒杀系统、虚拟滚动、断点续传
  • 【IPD资料合集】60份华为IPD体系、IPD流程管理体系、IPD质量管理体系及IPD研发管理体系建设(PPT+WORD)
  • 贵州面试想高分,关键在选对方法
  • 多模型协作方案:OpenClaw同时接入千问3.5-27B与Stable Diffusion
  • git分布式版本控制系统
  • Comsol 电介质与陶瓷电击穿的电树枝仿真探秘
  • 【无标题】作业
  • 极客专属:用OpenClaw+SecGPT-14B打造私人安全审计员
  • Modbus水质传感器嵌入式通信库设计与实践
  • 为什么要建立分支
  • OpenClaw语音交互:Phi-3-mini-128k-instruct对接语音输入技能
  • sys/queue.h在嵌入式开发中的高效应用
  • 每日 AI 研究简报 · 2026-04-03
  • OpenClaw学习助手:Qwen3.5-9B-AWQ-4bit自动整理网课截图笔记
  • OpenClaw+Qwen3.5-9B:学术论文助手从构思到排版全自动
  • seo推广外包需要多少投入_seo推广外包如何避免被算法惩罚
  • 深耕公考七载,以师者匠心筑就学员上岸之路
  • 企业级标准 Robot Framework + Selenium 项目结构
  • 基于springboot+vue词海记忆网站hx1380
  • StreamLib嵌入式流处理库:高效HTTP通信与缓冲优化
  • OpenClaw学习助手:Qwen3.5-9B驱动的知识整理与习题生成
  • 如何快速实现文件格式伪装?apate工具完整使用指南