range 范围查询
本章定位:价格筛选、时间范围、成绩区间——这些条件都使用 range 查询。日常搜索中 90% 的筛选条件都包含范围查询。
定义与作用
range 查询按数值或日期范围筛选文档,支持 gt(大于)、gte(大于等于)、lt(小于)、lte(小于等于)四个运算符。
完整示例:杨英的课程筛选
POST /courses/_search
{
"query": {
"bool": {
"filter": [
{
"range": {
"price": { "gte": 20000, "lte": 50000 }
}
},
{
"range": {
"publish_date": { "gte": "2024-01-01", "lte": "2024-06-30" }
}
}
]
}
}
}
成绩等级分类
POST /students/_search
{
"query": {
"range": { "score": { "gte": 90 } }
}
}
小结
range 查询四个操作符:gt/gte/lt/lte。日期范围支持 now 表达式(now-7d/d)。使用 range 时注意字段类型必须匹配(date/numeric),text 字段不支持 range。