下面以一个例子来说明布尔查询的用法。假设我们想查询年龄在 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 查询还支持其他逻辑运算符,例如:
- should:表示多个条件中满足任意一个即可,相当于逻辑上的“或”。比如,我们可以将上面的查询条件改为“年龄在 20 到 30 岁之间的员工,或者工资在 5000 到 8000 之间的员工”。
- must_not:表示结果中不能包含该条件,相当于逻辑上的“非”。比如,我们可以查询出年龄在 20 到 30 岁之间,但工资不在 5000 到 8000 之间的员工。
详细查询语法,请参考:ES查询语法