elasticsearch中filter、must、should使用不生效问题

本文讲述了在项目中遇到的一个Elasticsearch查询问题,原本使用title或content查询,需求优化后需要加上state条件。在尝试在原有查询基础上添加filter过滤后,发现查询结果不符合预期。经过问题分析,了解到should在与must或filter同级时默认不需满足should条件。解决方案是通过设置"minimum_should_match"确保满足特定条件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

写在前面

项目中遇到了一个查询问题,原本查询是title=“A” or content=“B”,经需求优化,需要变成(title=“A” or content=“B”) and (state = “C”)。

原始需求

查询title或introduction中满足的字段值

GET forexknow_album_bean/_search
{
   
  "query": {
   
    "bool": {
   
      "should": [
        {
   "match": {
   
          "title": {
   
            "query": "妲",
            "boost": 2
          }
        }},
        {
   "match": {
   
          "introduction": {
   
            "query": "熵"
          }
        }}
      ]
    }
  }
  , "size": 20
}

查询结果为null:

{
   
  "took" : 0,
  "timed_out" : false,
  "_shards" : {
   
    "total" : 5
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值