Elasticsearch (ES) 核心笔记

1. 整体概念:ES vs MySQL
概念 MySQL Elasticsearch 理解
库/表 Database/Table Index (索引) 相当于一个大文件夹。
Row Document (文档) 相当于文件夹里的一张卡片(JSON格式)。
字段 Column Field 卡片上的具体信息。
  • 一个索引 包含 多个文档
  • 一个文档一个 JSON 对象
  • 这个 JSON 对象里可以包含 多个字段 ,字段的值可以是字符串、数字,也可以是嵌套的子对象
2. 核心特性
  • 一个索引只对应一种类型
    • 现状:ES 7.x+ 已移除 Type 概念。一个索引只能存一种结构的文档。
    • 原因 :底层 Lucene 引擎要求字段类型统一(比如 status 要么全是字符串,要么全是数字),避免冲突和性能浪费。
    • 实践 :人员档案存 profile_index,案件存 case_index,互不干扰。
  • 文档是 JSON
    • 支持复杂结构,如数组group_ids: ["1", "2"]),这是 ES 处理多值数据的杀手锏。
3. 为什么使用 Script(脚本)?

在 Java 代码中拼接字符串执行脚本,是为了原子性更新

  • 痛点 :如果先查出来 -> 改 -> 写回去,高并发下容易造成数据覆盖(丢数据)。
  • 方案:把"修改逻辑"发给 ES,让 ES 在服务端内存里直接改。
  • 好处线程安全 (不会丢数据)、性能高(数据不用在网络间传输)。
4. Script 脚本参数详解

new Script(type, lang, code, params) 中:

  1. type :脚本类型。
    • inline(默认):代码写在请求里(最常用)。
    • stored:代码预存于 ES,这里传 ID。
  2. lang :脚本语言。
    • painless(默认):ES 专用语言,安全高效。
  3. code :脚本代码(字符串)。
    • 真正的逻辑,如 ctx._source.age += 1
  4. params :外部参数(Map)。
    • 用来把 Java 里的变量(如 groupId)传进脚本里,在脚本中通过 params.xxx 访问。
5. 脚本中的核心变量 ctx
  • ctx:固定写法,代表"上下文"。
  • ctx._source :最常用,代表当前文档的 JSON 数据
    • 读取ctx._source['name']
    • 修改ctx._source['group_id'] = 新值

终极总结

ES 是存 JSON 的,一个索引只存一种卡。为了改数据不丢,逻辑发给 ES 自己跑(Script),ctx 代表卡,params 传参数。

相关推荐
DianSan_ERP1 小时前
电商API接口全链路监控:构建坚不可摧的线上运维防线
大数据·运维·网络·人工智能·git·servlet
够快云库1 小时前
能源行业非结构化数据治理实战:从数据沼泽到智能资产
大数据·人工智能·机器学习·企业文件安全
西岸行者1 小时前
学习笔记:SKILLS 能帮助更好的vibe coding
笔记·学习
AI周红伟2 小时前
周红伟:智能体全栈构建实操:OpenClaw部署+Agent Skills+Seedance+RAG从入门到实战
大数据·人工智能·大模型·智能体
starlaky2 小时前
Django入门笔记
笔记·django
勇气要爆发2 小时前
吴恩达《LangChain LLM 应用开发精读笔记》1-Introduction_介绍
笔记·langchain·吴恩达
B站计算机毕业设计超人2 小时前
计算机毕业设计Django+Vue.js高考推荐系统 高考可视化 大数据毕业设计(源码+LW文档+PPT+详细讲解)
大数据·vue.js·hadoop·django·毕业设计·课程设计·推荐算法
计算机程序猿学长2 小时前
大数据毕业设计-基于django的音乐网站数据分析管理系统的设计与实现(源码+LW+部署文档+全bao+远程调试+代码讲解等)
大数据·django·课程设计
B站计算机毕业设计超人2 小时前
计算机毕业设计Django+Vue.js音乐推荐系统 音乐可视化 大数据毕业设计 (源码+文档+PPT+讲解)
大数据·vue.js·hadoop·python·spark·django·课程设计
十月南城2 小时前
数据湖技术对比——Iceberg、Hudi、Delta的表格格式与维护策略
大数据·数据库·数据仓库·hive·hadoop·spark