赞
踩
在Elasticsearch中进行日期或数值范围查询,你可以使用range
查询。以下是如何使用range
查询进行日期和数值范围查询的示例:
GET /my_index/_search
{
"query": {
"range": {
"post_date": { // 假设post_date是日期类型字段
"gte": "2022-01-01", // 大于等于2022年1月1日
"lte": "2022-12-31", // 小于等于2022年12月31日
"format": "yyyy-MM-dd" // 如果日期不是标准的Unix毫秒时间戳,需指定日期格式
}
}
}
}
GET /my_index/_search
{
"query": {
"range": {
"price": { // 假设price是数值类型字段
"gte": 100, // 大于等于100
"lte": 500, // 小于等于500
"boost": 2 // 可选,提升查询相关性得分
}
}
}
}
在上述例子中,gte
是 “greater than or equal to” 的缩写,lte
是 “less than or equal to” 的缩写。你还可以使用 gt
(大于)和 lt
(小于)代替 gte
和 lte
来进行开放区间查询。
如果索引中的日期是以字符串形式存储并且有特定的日期格式,你需要在查询中指定相应的格式。如果没有指定,Elasticsearch会尝试使用默认的日期格式解析输入的日期字符串。
对于数值类型的字段,Elasticsearch会直接比较数值大小,无需指定格式。同时,boost
参数可以用来提高该查询在综合评分中的比重,意味着在同等条件下,落在指定价格范围内的商品在搜索结果中的排名将更高。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。