Elasticsearch核心数据单元:Document文档详解及存储检索全流程
Elasticsearch核心数据单元Document文档详解及存储检索全流程一、前言二、Elasticsearch Document基础定义2.1 什么是 Document 文档2.2 文档核心特点2.3 ES vs MySQL 概念对应三、Document 文档完整结构元数据 业务数据3.1 元数据元信息控制文档行为3.2 标准文档示例四、Elasticsearch 文档存储与检索流程图4.1 文档存储写入流程图4.2 文档检索查询流程图4.3 流程一句话总结五、如何存储写入Document 文档5.1 存储方式1指定 ID 存储推荐5.2 存储方式2自动生成 ID 存储5.3 存储核心规则六、如何检索查询Document 文档6.1 检索方式1根据 ID 精确查询最快6.2 检索方式2全文检索最常用6.3 检索方式3条件过滤查询6.4 检索方式4查询所有文档七、文档核心操作增删改查CRUD实战7.1 创建PUT/POST7.2 查询GET7.3 修改POST 更新7.4 删除DELETE八、Document 文档核心特性8.1 不可变特性8.2 动态映射8.3 支持嵌套文档8.4 高性能检索九、文档存储与检索常见问题避坑9.1 问题1ID 相同会覆盖数据9.2 问题2查询不到数据9.3 问题3写入性能慢十、总结文档核心要点文末总结总结The Begin点点关注收藏不迷路一、前言在 Elasticsearch 面向文档的分布式架构中Document文档是最顶层、最核心、最终存储的数据单元。可以说ES 里一切数据都是文档一切操作围绕文档展开。很多新手不理解文档结构、元数据、存储路由规则导致写入失败、查询不到数据、数据分布不均。本文从文档定义、结构、元数据、存储原理、检索流程、实战命令、流程图全方位讲解让你彻底掌握 ES 文档。二、Elasticsearch Document基础定义2.1 什么是 Document 文档Document文档Elasticsearch 中可被索引、可被搜索的最小数据单元以JSON 格式存储。它相当于 MySQL 数据库中的一行数据Row但比关系型数据更灵活、支持嵌套结构。2.2 文档核心特点JSON 结构轻量、易读、支持嵌套无固定结构不同文档字段可不同动态映射自带唯一标识_id字段被分词、被索引可被快速检索属于索引IndexIndex ≈ 数据库Document ≈ 行2.3 ES vs MySQL 概念对应ElasticsearchMySQLIndex索引Database库Document文档Row行Field字段Column列Mapping映射Schema表结构三、Document 文档完整结构元数据 业务数据一个完整文档分为两部分元数据系统业务数据自定义3.1 元数据元信息控制文档行为_index文档属于哪个索引_id文档唯一 ID主键_source原始 JSON 数据_version版本号并发控制_score搜索相关性评分3.2 标准文档示例{_index:user_index,// 索引_id:1001,// 唯一ID_version:1,// 版本_score:1.0,// 评分_source:{// 真实业务数据name:张三,age:25,city:北京,interest:篮球、游泳}}四、Elasticsearch 文档存储与检索流程图4.1 文档存储写入流程图渲染错误:Mermaid 渲染失败: Parse error on line 3: ... C[路由算法shard hash(_id) % 主分片数]C -- -----------------------^ Expecting SQE, DOUBLECIRCLEEND, PE, -), STADIUMEND, SUBROUTINEEND, PIPE, CYLINDEREND, DIAMOND_STOP, TAGEND, TRAPEND, INVTRAPEND, UNICODE_TEXT, TEXT, TAGSTART, got PS4.2 文档检索查询流程图客户端查询请求协调节点广播到所有分片/指定分片并行检索文档收集所有结果排序/评分/分页返回最终文档4.3 流程一句话总结存储ID 哈希路由 → 主分片写入 → 同步副本检索广播查询 → 并行搜索 → 合并返回五、如何存储写入Document 文档5.1 存储方式1指定 ID 存储推荐PUT /user_index/_doc/1001 { name: 张三, age: 25, city: 北京, create_time: 2025-01-01 }适用订单 ID、用户 ID 有业务主键场景5.2 存储方式2自动生成 ID 存储POST /user_index/_doc { name: 李四, age: 28, city: 上海 }特点ES 自动生成唯一字符串 ID5.3 存储核心规则文档通过_id哈希取模路由分片主分片写入成功才会同步副本写入成功 高可用六、如何检索查询Document 文档6.1 检索方式1根据 ID 精确查询最快GET /user_index/_doc/1001特点直接路由分片毫秒级返回6.2 检索方式2全文检索最常用GET /user_index/_search { query: { match: { name: 张三 } } }6.3 检索方式3条件过滤查询GET /user_index/_search { query: { term: { city: 北京 } } }6.4 检索方式4查询所有文档GET /user_index/_search { query: { match_all: {} } }七、文档核心操作增删改查CRUD实战7.1 创建PUT/POSTPUT /index/_doc/id7.2 查询GETGET /index/_doc/id7.3 修改POST 更新POST /index/_doc/1001/_update { doc: { age: 26 } }7.4 删除DELETEDELETE /index/_doc/1001八、Document 文档核心特性8.1 不可变特性文档写入后不能修改修改 删除旧文档 创建新文档通过_version控制版本8.2 动态映射无需提前定义结构自动识别字段类型字符串/数字/日期8.3 支持嵌套文档{name:张三,address:{province:广东,city:深圳}}8.4 高性能检索基于倒排索引支持分词、模糊、精确、范围、聚合等查询九、文档存储与检索常见问题避坑9.1 问题1ID 相同会覆盖数据原因PUT 相同 ID 会执行更新操作解决使用_create强制新增9.2 问题2查询不到数据原因字段类型错误text/keyword、分词不匹配解决检查 Mapping 类型9.3 问题3写入性能慢原因分片数不合理、副本过多解决合理规划分片十、总结文档核心要点文档是 ES 最小数据单元JSON 格式存储 路由分片 主写副同步检索 广播查询 并行处理 结果合并元数据_id、_index、_source是核心支持 CRUD、全文检索、精确查询文末总结Document 文档是 Elasticsearch 一切功能的基础。理解文档 理解 ES 数据模型。存储依靠路由算法实现分布式检索依靠倒排索引实现高性能所有业务最终都落地为文档的增删改查掌握文档存储与检索你就掌握了 ES 最核心的使用能力。总结Document 定义ES最小数据单元JSON 格式类似数据库行数据文档结构元数据_id/_index/_source 业务字段存储流程协调节点 → 哈希路由 → 主分片写入 → 同步副本检索流程协调节点 → 广播分片 → 并行查询 → 合并结果核心操作PUT写入、GET查询、POST更新、DELETE删除The End点点关注收藏不迷路
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2531529.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!