ElasticSearch bool查询 must,must_not ,should

es的bool查询用于合并多个查询子句,同时要计算每一个查询子句的_score(相关性分值)。

must

查询条件必须满足,相当于and

GET /blank/_search
{
  "query": {
    "bool": {
      "must": [
        {"term": {
          "title": {
            "value": "java学习"
          }
        }}
      ],
      "should": {
          "term": {
             "content": "教程"
         }
       }
    }
  }
}

must_not

查询条件不需要满足,相当于not

GET /blank/_search
{
  "query": {
    "bool": {
      "must_not": [
        {"term": {
          "title": {
            "value": "java学习"
          }
        }}
      ]
    }
  }
}

should

查询条件可以满足也可以不满足,相当于or,它必须和must一起使用,不能单独使用,实例见must。

总结

1.es中使用should查询必须要和must一起使用才可以。

2.如果bool查询下没有must子句,那至少应该有一个should子句。但是 如果有must子句,那么没 有should子句也可以进行查询。

版权声明:本文为JAVASCHOOL原创文章,未经本站允许不得转载。