全面解析Elasticsearch查询方式12大类核心搜索语法实战流程图场景详解一、前言Elasticsearch 查询体系总览二、Elasticsearch 查询核心分类基础架构2.1 ES 查询两大核心体系2.2 ES 查询执行流程图三、Elasticsearch 12 大类核心查询方式语法场景示例3.1 精准匹配查询term 查询3.2 多值精准匹配terms 查询3.3 全文检索查询match 查询3.4 多字段全文检索multi_match 查询3.5 短语精确匹配match_phrase 查询3.6 范围查询range 查询3.7 存在性查询exists 查询3.8 通配符查询wildcard 查询3.9 正则查询regexp 查询3.10 地理坐标查询geo_distance 查询3.11 组合条件查询bool 查询3.12 聚合查询aggregations四、Elasticsearch 查询方式分类图快速记忆五、高频查询方式对比表开发速查六、最佳实践企业开发查询规则七、总结总结The Begin点点关注收藏不迷路一、前言Elasticsearch 查询体系总览Elasticsearch 提供极其丰富的查询方式覆盖精准匹配、模糊检索、范围筛选、聚合统计、地理查询等全场景所有查询基于RESTful API执行语法统一、易用性极强。本文按照官方分类实战常用度将 ES 查询分为12 大类核心方式包含流程图、语法示例、适用场景是企业开发必备的查询手册。二、Elasticsearch 查询核心分类基础架构2.1 ES 查询两大核心体系查询上下文Query Context用于数据检索返回匹配文档相关性评分聚合上下文Aggregation Context用于数据统计分析不返回原始数据只返回统计结果2.2 ES 查询执行流程图客户端发送查询请求ES协调节点接收解析查询类型/分词/索引路由到对应分片执行查询/过滤/聚合计算相关性评分/排序汇总结果返回客户端流程说明请求统一由协调节点分发先过滤再查询提升性能支持排序、分页、高亮、评分优化毫秒级返回海量数据结果。三、Elasticsearch 12 大类核心查询方式语法场景示例3.1 精准匹配查询term 查询定义不分词、完全相等匹配用于 keyword、数字、布尔、日期类型适用场景用户ID、订单号、状态值、分类ID等精准字段查询示例{query:{term:{user_id:1001}}}3.2 多值精准匹配terms 查询定义匹配多个精准值相当于 MySQL 的 in适用场景查询多个分类、多个状态、多个ID示例{query:{terms:{category_id:[101,102,103]}}}3.3 全文检索查询match 查询定义分词后匹配最常用的全文搜索适用场景商品标题、文章内容、描述、评论等文本搜索示例{query:{match:{title:Elasticsearch 实战教程}}}3.4 多字段全文检索multi_match 查询定义同时在多个字段中搜索相同关键词适用场景同时搜索标题描述内容、用户名昵称简介示例{query:{multi_match:{query:搜索引擎,fields:[title,content,desc]}}}3.5 短语精确匹配match_phrase 查询定义分词顺序完全一致精确短语匹配适用场景名言、标题、固定短语搜索示例{query:{match_phrase:{title:Elasticsearch 入门}}}3.6 范围查询range 查询定义大于、小于、大于等于、小于等于范围筛选适用场景价格、时间、年龄、销量、分数关键字gt / gte / lt / lte示例{query:{range:{price:{gte:100,lte:500}}}}3.7 存在性查询exists 查询定义查询字段是否存在值不为null、不存在适用场景筛选有图片、有备注、有标签的数据示例{query:{exists:{field:image_url}}}3.8 通配符查询wildcard 查询定义支持*任意字符、?单个字符模糊匹配适用场景前缀匹配、后缀匹配、简单模糊检索注意性能一般不建议前缀用 *示例{query:{wildcard:{title:ES*}}}3.9 正则查询regexp 查询定义支持正则表达式高级匹配适用场景复杂格式匹配手机号、编码、规则字符串示例{query:{regexp:{phone:1[3456789]\\d{9}}}}3.10 地理坐标查询geo_distance 查询定义按地理位置距离检索适用场景附近门店、附近的人、附近订单、地图检索示例{query:{geo_distance:{distance:2km,location:{lat:39.9,lon:116.3}}}}3.11 组合条件查询bool 查询定义多条件组合ES 最强大、最常用查询四大子句must必须匹配andmust_not必须不匹配should可选匹配orfilter过滤不计算评分性能更高适用场景电商多条件筛选分类价格销量状态示例{query:{bool:{must:[{match:{title:手机}}],filter:[{range:{price:{gte:1000}}}]}}}3.12 聚合查询aggregations定义数据统计、分组、求和、平均值、最大值、去重计数适用场景销量统计、销售额、男女比例、分类商品数示例{size:0,aggs:{group_by_category:{terms:{field:category_id}}}}四、Elasticsearch 查询方式分类图快速记忆ES查询精准查询全文查询过滤查询地理查询高级查询聚合查询termtermsmatchmulti_matchmatch_phraserangeexistsgeo_distancewildcardregexpboolsum/avgterms分组五、高频查询方式对比表开发速查查询方式分词性能适用字段典型场景term否极高keyword/数字ID、状态、分类match是高text标题、内容、描述match_phrase是高text精确短语range否极高数字/时间价格、时间范围bool-高全部多条件组合筛选geo_distance否高geo_point附近门店aggregation-高全部统计报表六、最佳实践企业开发查询规则精准字段用 term/terms禁止用 match文本搜索用 match禁止模糊全表扫描多条件必用 bool filter提升性能*大数据量禁止使用前缀通配符统计用聚合禁止业务代码统计地理检索必须用 geo 类型七、总结Elasticsearch 提供12大类核心查询方式覆盖企业搜索、筛选、统计、地理、日志分析全场景精准查询term、terms全文检索match、multi_match、match_phrase过滤查询range、exists模糊/正则wildcard、regexp地理查询geo_distance组合查询bool最核心统计分析aggregations熟练掌握 ES 查询语法可轻松实现亿级数据毫秒级检索是后端、大数据、搜索开发必备技能。总结ES 查询分为查询上下文和聚合上下文支持检索统计最常用查询term、match、range、bool、aggregations企业开发优先使用filter 过滤性能远高于普通查询全文检索用 text精准匹配用 keyword字段设计决定查询效率地理查询、正则查询、通配符查询满足复杂业务需求。The End点点关注收藏不迷路