一架梯子,一头程序猿,仰望星空!
Elasticsearch面试题 > 内容正文

Elasticsearch 的布尔查询是什么?请举例说明。


问题简答

Elasticsearch 的布尔查询是一种可以组合多个查询条件的查询方式。它可以将多个查询条件通过逻辑运算符组合起来,实现更为复杂的查询需求。常用的逻辑运算符有 must(与)、should(或)、must_not(非)。

问题详解:

下面以一个例子来说明布尔查询的用法。假设我们想查询年龄在 20 到 30 岁之间,且工资在 5000 到 8000 之间的员工。我们可以使用布尔查询来实现这个需求,具体查询语句如下:

GET /my_index/_search
{
  "query": {
    "bool": {
      "must": [
        { "range": { "age": { "gte": 20, "lte": 30 } } },
        { "range": { "salary": { "gte": 5000, "lte": 8000 } } }
      ]
    }
  }
}

在这个例子中,使用了 bool 查询来组合两个查询条件。其中,must 表示这两个条件必须同时满足,即年龄必须在 20 到 30 岁之间,工资必须在 5000 到 8000 之间。因此,查询结果只包含同时满足这两个条件的员工数据。

除了 must 以外,bool 查询还支持其他逻辑运算符,例如:

  1. should:表示多个条件中满足任意一个即可,相当于逻辑上的“或”。比如,我们可以将上面的查询条件改为“年龄在 20 到 30 岁之间的员工,或者工资在 5000 到 8000 之间的员工”。
  2. must_not:表示结果中不能包含该条件,相当于逻辑上的“非”。比如,我们可以查询出年龄在 20 到 30 岁之间,但工资不在 5000 到 8000 之间的员工。

详细查询语法,请参考:ES查询语法