目录
[复合查询 Boolean Query](#复合查询 Boolean Query)
复合查询 Boolean Query
布尔查询是一个或多个查询子句的组合。子查询的组合方式有:
- must:必须匹配每个子查询,类似"与
- should:选择性匹配子查询,类似"或"
- must not:必须不匹配,不参与算分,类似"非
- filter:必须匹配,不参与算分
利用bool查询实现功能
案例:搜索名字包含"如家",价格不高于400,在坐标31.21121.5周围10km范围内的酒店
GET /hotel/_search
{
"query" : {
"bool" : {
"must" : [
{
"match": {"name":"如家"}
}
],
"must_not" : [
{
"range": { "price": { "gt" : 400 }}
}
],
"filter" : [
{
"geo_distance" : {
"distance":"10km" ,
"location": "lat": 31.21 , "lon": 121.5}
}
}
]
}
}
}
总结
bool查询有几种逻辑关系?
- must:必须匹配的条件,可以理解为 "与"
- should:选择性匹配的条件,可以理解为 "或"
- must_not:必须不匹配的条件,不参与打分
- filter:必须匹配的条件,不参与打分