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 可以修改查询检索到的文档的得分。