复合查询

复合查询用于组合多个查询条件,支持各种逻辑关系(AND、OR、NOT)和评分策略。

查询类型 #

查询说明使用场景
bool布尔组合(must、should、must_not、filter)最常用的组合查询
boosting提升评分(positive query + negative boosting)降低特定结果的相关性
constant_score常数评分(所有结果同分)过滤+固定评分
dis_max取最高分(多字段查询)多字段搜索,取最佳匹配
function_score函数式评分(自定义评分函数)复杂评分逻辑、距离衰减、时间衰减

特点 #

  • 灵活的组合:支持任意嵌套和组合
  • 评分策略多样:支持多种评分计算方式
  • 逻辑清晰:明确的 AND/OR/NOT 语义
  • 性能可控:支持 filter 上下文以提升性能

bool 查询子句说明 #

子句说明计分
must必须匹配(AND)
filter必须匹配(AND)否,用于过滤
should应该匹配(OR)是,可设置最少匹配数
must_not必须不匹配(NOT)

推荐阅读顺序 #

  1. bool:最常用的组合查询
  2. constant_score:过滤+固定评分
  3. dis_max:多字段最高分
  4. boosting:降低特定结果评分
  5. function_score:自定义评分函数

常见用途 #

场景推荐查询
关键词 AND 分类 AND 日期范围bool with must
关键词搜索,排除某类结果bool with must_not
多个搜索词,任一匹配bool with should
过滤+评分constant_score
多字段搜索,取最佳字段dis_max
距离越近评分越高function_score with gauss decay
新文档评分更高function_score with linear decay