查询 DSL

本章节是 Easysearch 查询语言(Query DSL)的完整参考。无论你是想了解查询的工作原理,还是需要查阅具体的查询语法,都可以在这里找到答案。

基础教程 #

从基本概念开始,逐步深入:

  1. Query DSL 基础:查询结构、查询上下文、请求体搜索
  2. 结构化搜索:精确值查询、范围查询、存在性查询
  3. 查询与过滤上下文:理解计分与性能

查询类型参考 #

Easysearch 支持 50+ 种查询类型,按用途分为以下几大类:

精确查询(Term-Based Query) #

用于精确值匹配,不进行分词。详见 精确查询

查询说明
term精确匹配单个值
terms精确匹配多个值(支持条件查找)
range范围查询(数值、日期、字符串)
prefix前缀匹配
wildcard通配符查询(*?
regexp正则表达式(Lucene 语法)
fuzzy模糊匹配(编辑距离)
exists存在性检查
ids按文档 ID 查询
terms_set动态词项匹配(最少匹配数)

全文查询(Full-Text Query) #

支持分词与相关性计分的查询。详见 全文搜索

查询说明
match标准全文查询
match_phrase短语匹配(词序+位置)
match_phrase_prefix短语前缀匹配
match_bool_prefix布尔前缀匹配
multi_match多字段全文搜索
query_stringLucene 查询字符串语法
simple_query_string简化查询字符串(容错)
intervals词项间隔匹配

复合查询(Compound Query) #

用于组合多个查询条件。详见 复合查询

查询说明
bool布尔组合(must、should、must_not、filter)
boosting降低特定结果的相关性
constant_score常数评分(包装 filter)
dis_max取最高分(多字段)
function_score函数式评分(衰减、随机、脚本)

Span 查询 #

文本级精细控制查询(词项位置、距离、顺序)。详见 Span 查询

查询说明
span_term单个词项的位置查询
span_multi多词项 span(包装 prefix/wildcard/regexp)
span_near词项距离约束(slop)
span_or多个 span 的 OR
span_not排除特定位置
span_first限制匹配在前 N 个位置内
span_containing包含另一个 span 的匹配
span_within被另一个 span 包含的匹配
span_field_masking跨字段 span 查询

关联查询(Joining Query) #

跨文档的关联查询。详见 关联查询

查询说明
nested嵌套文档查询
has_child父文档查询(通过子文档条件)
has_parent子文档查询(通过父文档条件)
parent_id按父文档 ID 查询子文档

地理查询(Geo Query) #

基于地理位置的查询。详见 地理搜索

查询说明
geo_bounding_box矩形区域内的点
geo_distance指定距离内的点
geo_polygon多边形区域内的点
geo_shape与指定形状相交/包含/相离

专业查询(Specialized Query) #

特殊场景的高级查询。详见 专业查询

查询说明
more_like_this相似文档查询
percolate反向查询(文档匹配规则)
rank_feature排名特性查询
script_score脚本评分
distance_feature距离特性
script脚本查询(底层接口)
wrapper包装查询(JSON 字符串)

搜索结果处理 #

分页、排序与高亮 #

功能说明
分页与滚动from/size、Scroll、search_after、PIT
排序字段排序、地理距离排序、脚本排序
高亮高亮命中词(unified/plain/fvh 三种高亮器)
自动补全match_phrase_prefix、Edge N-gram、Completion Suggester
Point In Time (PIT)冻结快照式分页搜索

查询参数与工具 #

参数说明示例
minimum_should_matchbool 查询中 should 的最少匹配数minimum_should_match: 2
rewrite多词项查询的重写策略rewrite: constant_score
正则表达式Lucene 正则引擎支持的语法
Match All / Match None匹配所有/不匹配任何文档

高级功能 #

功能说明
Search TemplateMustache 模板化查询,支持参数化
搜索管道查询改写、结果重排、后处理
结果折叠按字段值去重折叠(field collapsing)
查询重打分对 Top-N 结果用更精细的查询重新打分

快速导航 #

场景推荐查询
查找所有数据match_all
精确查找一个值term
精确查找多个值terms
范围查询(日期、数值)range
全文搜索关键词match
多字段全文搜索multi_match
短语搜索match_phrase
布尔组合(AND/OR/NOT)bool
嵌套文档查询nested
相似文档查询more_like_this
地理距离搜索geo_distance
搜索建议/自动补全自动补全