elasticsearch 查询语句中must与should一起使用,should失效

这是写过最短的一个博客了。

当查询语句中包含must与should的时候,发现should失效。那我们就把must改成must_not,逻辑再取反就可以了(无意中发现)。

希望能帮到大家,真TM有趣~ 

 

贴俩真实语句给大家看看把。

失败语句:

{
  "from" : 0,
  "size" : 100,
  "query" : {
    "bool" : {
      "must" : [
        {
          "range" : {
            "report_time" : {
              "from" : "2020-04-10 17:38:15",
              "to" : null,
              "include_lower" : true,
              "include_upper" : true,
              "boost" : 1.0
            }
          }
        }
      ],
      "should" : [
        {
          "term" : {
            "event_type.keyword" : {
              "value" : "xx",
              "boost" : 1.0
            }
          }
        },
        {
          "term" : {
            "event_type.keyword" : {
              "value" : "yy",
              "boost" : 1.0
            }
          }
        }
      ],
      "adjust_pure_negative" : true,
      "boost" : 1.0
    }
  },
  "sort" : [
    {
      "report_time" : {
        "order" : "desc"
      }
    }
  ]
}

成功语句:

{
  "from" : 0,
  "size" : 100,
  "query" : {
    "bool" : {
      "must_not" : [
        {
          "range" : {
            "report_time" : {
              "from" : null,
              "to" : 2020-04-10 17:38:15,
              "include_lower" : true,
              "include_upper" : true,
              "boost" : 1.0
            }
          }
        }
      ],
      "should" : [
        {
          "term" : {
            "event_type.keyword" : {
              "value" : "xx",
              "boost" : 1.0
            }
          }
        },
        {
          "term" : {
            "event_type.keyword" : {
              "value" : "yy",
              "boost" : 1.0
            }
          }
        }
      ],
      "adjust_pure_negative" : true,
      "boost" : 1.0
    }
  },
  "sort" : [
    {
      "report_time" : {
        "order" : "desc"
      }
    }
  ]
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值