Constant score query
常量分值查询,目的就是返回指定的 score(默认1),一般都结合 filter 使用,因为 filter context 忽略 score。
基本语法
多用于结合bool查询实现自定义得分,其基本语法如下:
1 | POST /index_name/_search |
1 | { |
- const_score:关键字
- filter:只能有一个
- field_name:字段名
- query_clause:待查询的语句
- boost:自定义得分
实例
1 | GET /customer/_search |
bool query
布尔查询,由一个或者多个子句组成,每个子句都有特定的类型。
- must:返回的文档必须满足 must 子句的条件,并且参与计算分值
- filter:返回的文档必须满足 filter 子句的条件。但不会像 must 一样参与计算分值
- should:返回的文档可能满足 should 子句的条件。布尔查询在 query context 中,如果某条文档未匹配 should 的条件,但是匹配 must 或 filter 的条件,则文档仍会被返回,此时 should 只影响分数;如果不存在 must 和 filter,则必须匹配 should。这种行为由 minimum_should_match 参与决定。
- must_not:返回的文档必须不满足 must_not 定义的条件。
官网例子
第一步:查询 name 为 “李云龙” 的文档
1 | GET /customer/_search |
第二步:加入过滤条件,只保留 id 为 510221197001013611 的文档
1 | GET /customer/_search |
第三步:使用 should,判断 addr 中必须有昆明市,这种情况下 should 子句会影响计分
1 | GET /customer/_search |
第四步:加入 must_not 排除上海
1 | GET /customer/_search |