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"
      }
    }
  ]
}

 

你可能感兴趣的:(随笔,elasticsearch,java)