Elasticsearch核心数据:Document文档详解+存储检索完整实战

张开发
2026/4/21 20:36:30 15 分钟阅读

分享文章

Elasticsearch核心数据:Document文档详解+存储检索完整实战
Elasticsearch核心数据Document文档详解存储检索完整实战一、前言二、基础定义什么是Elasticsearch Document2.1 官方概念2.2 通俗理解2.3 文档核心特点三、文档结构一个标准Document示例3.1 文档核心元数据系统自动生成四、核心流程文档存储与检索流程图五、文档存储新增/创建文档完整API5.1 方式1自定义ID存储推荐5.2 方式2自动生成ID存储5.3 存储成功返回结果六、文档检索查询/获取文档5种常用方式6.1 方式1根据ID精确获取文档6.2 方式2全文检索match 搜索6.3 方式3精确匹配term 查询6.4 方式4组合条件查询6.5 方式5查询所有文档七、文档操作更新、删除文档7.1 更新文档PUT / POST7.2 删除文档八、核心概念文档路由原理为什么能快速找到九、文档 vs MySQL 数据对比表十、总结The Begin点点关注收藏不迷路一、前言在 Elasticsearch 中Document文档是可被搜索的最小数据单元所有搜索、聚合、查询操作的本质都是对文档进行操作。很多新手不理解文档是什么、文档与MySQL数据的关系、如何正确存储/更新/删除/检索文档导致数据写入失败、查询不到、数据结构混乱。本文将从文档定义、结构特点、唯一标识、存储流程、检索流程、完整API实战全方位讲解搭配流程图、对比表、可直接运行的命令让你彻底掌握 ES 文档。二、基础定义什么是Elasticsearch Document2.1 官方概念DocumentElasticsearch 中结构化的数据记录以JSON 格式存储相当于 MySQL 数据库中的一行数据。2.2 通俗理解Elasticsearch 索引 → MySQL 数据库表Document 文档 → MySQL 表中的一行记录Field 字段 → MySQL 表中的一列2.3 文档核心特点JSON 结构轻量级、易读、结构化无固定结构灵活不同文档可拥有不同字段自带唯一ID每个文档都有全局唯一标识_id可被索引所有字段会被自动索引支持快速查询有元数据包含_index、_id、_source等系统字段三、文档结构一个标准Document示例一个用户信息文档JSON 格式{name:张三,age:25,gender:男,phone:13800138000,address:北京市朝阳区,create_time:2025-01-01}3.1 文档核心元数据系统自动生成元数据字段作用_index文档所属索引_id文档唯一ID_source文档原始JSON数据_version文档版本号乐观锁_score搜索相关性评分四、核心流程文档存储与检索流程图存储/新增文档检索/查询文档客户端发送文档数据操作类型协调节点接收根据_id路由到对应数据节点写入主分片同步到副本分片存储成功返回结果协调节点接收分发请求到对应分片节点并行查询合并结果返回文档给客户端五、文档存储新增/创建文档完整API存储文档有两种方式自定义ID、自动生成ID。5.1 方式1自定义ID存储推荐指定ID1001存储到user_index索引PUT/user_index/_doc/1001{name:张三,age:25,gender:男,phone:13800138000,address:北京市朝阳区,create_time:2025-01-01}✅ 返回结果result: created表示存储成功。5.2 方式2自动生成ID存储不指定IDES自动生成随机唯一IDPOST/user_index/_doc{name:李四,age:28,gender:女,phone:13900139000}✅ 自动生成的_id类似3hXJ448sdf8SJhH5.3 存储成功返回结果{_index:user_index,_id:1001,_version:1,result:created,_shards:{total:2,successful:2,failed:0}}六、文档检索查询/获取文档5种常用方式检索是 ES 核心能力分为精确获取、全文检索、条件查询等。6.1 方式1根据ID精确获取文档GET/user_index/_doc/1001✅ 直接返回完整文档。6.2 方式2全文检索match 搜索搜索名字包含“张三”的文档GET/user_index/_search{query:{match:{name:张三}}}6.3 方式3精确匹配term 查询查询手机号13800138000的文档GET/user_index/_search{query:{term:{phone:13800138000}}}6.4 方式4组合条件查询年龄25 且 性别女GET/user_index/_search{query:{bool:{filter:[{range:{age:{gt:25}}},{term:{gender:女}}]}}}6.5 方式5查询所有文档GET/user_index/_search{query:{match_all:{}}}七、文档操作更新、删除文档7.1 更新文档PUT / POSTPOST/user_index/_doc/1001{name:张三,age:26# 更新年龄}✅ 返回result: updated7.2 删除文档DELETE/user_index/_doc/1001✅ 返回result: deleted八、核心概念文档路由原理为什么能快速找到ES 根据文档ID自动计算存储节点公式shard hash(_id) % 主分片数量流程对_id进行哈希计算对主分片数取模自动路由到对应分片与节点检索时同理直接定位数据九、文档 vs MySQL 数据对比表序号ElasticsearchMySQL1Index索引Table表2Document文档Row一行数据3Field字段Column列4Mapping映射Schema表结构5JSON行数据6无固定结构固定表结构十、总结Document ES 最小数据单元 JSON 格式 MySQL 一行数据文档必须有唯一_id支持自定义/自动生成存储流程路由 → 写入主分片 → 同步副本检索流程分发 → 并行查询 → 合并结果核心APIPUT/POST存储、GET查询、DELETE删除一句话记住所有ES操作都是围绕Document展开文档是ES的灵魂与核心The End点点关注收藏不迷路

更多文章