本文主要是介绍Elasticsearch 8.1官网文档梳理 - 十四、Query DSL(ES 查询语法),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
Query DSL
Elasticsearch 提供了一种基于JSON 的查询 DSL (Domain Specific Language) 来定义查询。可以把查询 DSL 看作是查询的 AST(Abstract Syntax Tree),由两种类型的子句组成:
叶子节点查询: 叶子查询子句在特定字段中查找特定值,例如 match
,term
,range
查询。这类查询可以单独使用
复合查询子句: 复合查询可以包裹 叶子节点查询 或者 复合查询子句,用于组合多个查询( bool
,dis_max
)或改变查询行为(constant_score
)。
一、Query and filter context
分别描述了什么是 相关性评分(Relevance scores)、相关性查询(Query context)、过滤查询(Filter context)
Filter context:
- 在
bool
中的filter
、must_not
- 在
constant_score
中的filter
filter
聚合
二、Compound queries
复合查询
2.1 Boolean
用于组合 must
,should
,must_not
,filter
,查询,其中 must
,should
作为相关性查询,must_not
,filter
作为过滤查询,不参与评分
2.2 Boosting
调整 相关性评分的查询,不调整 positive
匹配文档的评分,降低 negative
匹配文档的评分降低倍数 由 negative_boost
[0 -1.0]参数决定
2.3 Constant score
通过 constant_score
查询返回的文档都具有相同的评分,评分为 boost
所给定的值
GET /_search
{"query": {"constant_score": {"filter": {"term": { "user.id": "kimchy" }},"boost": 1.2}}
}
2.4 Disjunction max
queries
中包含多个查询,取其中 最高的相关性评分 评分作为文档的相关性评分,或取 最高的相关性评分 加上 其他经过调整的查询结果的相关性评分 作为文档的相关性评分。
queries
: 包含多个查询字句,返回的文档匹配一个或多个查询字句
tie_breaker
: 调整除 最高的相关性评分 以外的其他相关性评分的系数
2.5 Function score
使用 function_score
可以修改查询检索到的文档的得分。
三、Full text queries
Geo queries
Shape queries
Joining queries
Match all
Span queries
Specialized queries
Term-level queries
minimum_should_match parameter
rewrite parameter
Regular expression syntax
这篇关于Elasticsearch 8.1官网文档梳理 - 十四、Query DSL(ES 查询语法)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!