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

Elasticsearch (ES) 核心笔记

1. 整体概念:ES vs MySQL
概念MySQLElasticsearch理解
库/表Database/TableIndex (索引)相当于一个大文件夹。
RowDocument (文档)相当于文件夹里的一张卡片(JSON格式)。
字段ColumnField卡片上的具体信息。
  • 一个索引包含多个文档
  • 一个文档一个 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传参数。

http://www.jsqmd.com/news/335452/

相关文章:

  • PowerPaint-V1实战:如何用AI一键去除照片中的路人?
  • Windows窗口管理效率工具深度评测:从痛点诊断到效能优化
  • 造相 Z-Image 部署案例解析:中小企业用单卡4090D构建AI内容中台
  • Clawdbot实战:30分钟完成Qwen3-VL私有化部署与飞书对接
  • 手把手教你用GLM-4v-9B实现高分辨率图像理解:从安装到实战
  • 造相 Z-Image 实操手册:生成失败排查指南|OOM警告触发条件与应对措施
  • 通义千问3-Reranker-0.6B快速部署指南:3步搭建多语言文本排序服务
  • Qwen3-TTS-12Hz-1.7B-CustomVoice应用场景:为元宇宙虚拟人注入多语种语音
  • 从论文到实践:Unsloth核心优化技术通俗解读
  • NSC_BUILDER:Switch文件管理全能工具使用指南
  • 【国家级保密项目C编码规范】:9类敏感符号表隐藏技术、5种动态跳转混淆模式与编译器插件实现
  • 3大性能突破!SMUDebugTool让AMD用户释放硬件潜能的创新方案
  • 从入门到精通:虚拟机解锁工具的全方位应用指南
  • Qwen3-Reranker-4B一文详解:4B模型在MTEB-Reranking子集上SOTA得分解析
  • 开源工具版本管理机制深度剖析与实战指南
  • 如何高效管理Windows驱动存储?DriverStore Explorer的全方位解决方案
  • 人脸识别OOD模型效果展示:同一张图添加高斯噪声后OOD分下降趋势图
  • 经典游戏魔兽争霸3现代系统完美运行超实用指南:零基础搞定Win11兼容难题
  • PDF-Parser-1.0零基础教程:5分钟搞定文档解析与表格识别
  • [技术方案] 解决魔兽争霸III现代运行问题的插件化方法:基于WarcraftHelper的实现
  • 小白友好!QWEN-AUDIO智能语音合成系统快速入门指南
  • DAMO-YOLO TinyNAS部署教程:EagleEye与MinIO对象存储联动实现检测结果持久化
  • HY-MT1.5-1.8B对比Google Translate:中文英译实测
  • VibeVoice Pro应用场景:法律文书语音摘要——长文本关键信息流式播报实现
  • FLUX.1-dev惊艳效果展示:超越SDXL的Photorealistic图像生成真实案例
  • REX-UniNLU卷积神经网络优化:提升文本分类精度
  • MedGemma-X真实应用场景:急诊科快速胸片判读与教学演示双模式
  • 如何突破反爬限制?7天打造本地生活服务数据采集系统:企业级动态数据抓取解决方案
  • Steam成就管理终极指南:从痛点解决到安全应用的完整方案
  • HY-MT1.5-1.8B模型剪枝:进一步压缩体积的实验性部署