9.1.1-elasticsearch复合查询之bool/boosting查询

本文详细介绍了Elasticsearch中的bool查询和boosting查询。bool查询允许组合不同类型的子句,如must、should、must_not和filter,其中must和should子句的分数相加形成最终得分。filter子句不计算相似度分。boosting查询则可以在返回匹配文档的同时降低某些条件的匹配分数,用于调整搜索结果的权重。
摘要由CSDN通过智能技术生成
1、bool查询

bool查询是组合叶子查询或复合查询子句的默认查询方式,如must,should,must_not或者filter子句;must与should子句查询最终分数由两个子句各自匹配分数相加得到,而must_not与filter子句需要在过滤查询中执行;

bool查询底层由Lucene中的BooleanQuery类实现,该查询由一个或多个布尔子句组成,每个子句由特定类型声明;

1.1、bool查询子句中的类型
序号 类型 描述
1 must 该查询子句必须出现在匹配的文档中且与相似度分数计算相关
2 filter 该查询子句必须出现在匹配的文档中且是在过滤上下文中执行,与must查询不同的是该查询会忽略相似度分数计算且会对结果缓存
3 should 该查询子句应该出现在匹配的文档中
4 must_not 该查询子句必须不能出现在匹配的文档中,该查询在过滤上下文中执行,这也意味着不会计算相似度分数(分数为0)且对结果会缓存

文档同时匹配查询子句must或should可获得更高的分数,而最后相似度分_score就是通过匹配must或should计算出的分数相加得到

//请求参数
POST bank/_search
{
   
  "query": {
   
    "bool": {
   
      "must": [
        {
   
          "term": {
   
            "gender.keyword": "M"
          }
        }
      ],
      "filter": {
   
        "term": {
   
          "state.keyword": "MO"
        }
      },
      "must_not": [
        {
   
          "range": {
   
            "age": {
   
              "gte": 20,
              "lte": 30
            }
          }
        }
      ],
      "should": [
        {
   
          "match": {
   
            "email": "comcubine.com"
          }
        },
        {
   
          "match": {
   
            "address": "Avenue"
          }
        }
      ],
      "minimum_should_match": 1,
      "boost": 1
    }
  }
}

//返回结果
{
   
  "took" : 5,
  "timed_out" : false,
  "_shards" : {
   
    "total" : 1,
    "successful" : 1,
    "skipped" : 0,
    "failed" : 0
  },
  "hits" : {
   
    "total" : {
   
      "value" : 2,
      "relation" : "eq"
    },
    "max_score" : 7.1838775,
    "hits" : [
      {
   
        "_index" : "bank",
        "_type" : "_doc",
        "_id" : "58",
        "_score" : 7.1838775,
        "_source" : {
   
          "account_number" : 58,
          "balance" : 31697,
          "firstname" : "Marva",
          "lastname" : "Cannon",
          "age" : 40,
          "gender" : "M",
          "address" : "993 Highland Place",
          "employer" : "Comcubine",
          "email" : "marvacannon@comcubine.com",
          "city" : "Orviston",
          "state" : "MO"
        }
      },
      {
   
        "_index" : "bank",
        "_type" : "_doc",
        "_id" : "286",
        "_score" : 2.2192826,
        "_source" : {
   
          "account_number" : 286,
          "balance" : 39063,
          "firstname" : "Rosetta",
          "lastname" : "Turner",
          "age" : 35,
          "gender" : "M",
          "address" : 
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值