排序
es支持对搜索结果排序,默认是根据相关度算分(_score)来排序。可以排序字段类型有:keyword类型,数值类型,地理坐标类型,日期类型等。
案例1
查询所有后根据价格排序:
GET /hotel/_search
{
"query":{
"match_all": {}
},
"sort": [
{
"price": {
"order": "desc"
}
}
]
}
案例2
查询所有后根据经纬度排序,由近到远:
获取经纬度的方式:https://lbs.amap.com/demo/jsapi-v2/example/map/click-to-get-Inglat
GET /hotel/_search
{
"query": {
"match_all": {}
},
"sort": [
{
"_geo_distance": {
"location": {
"lat": 31.21,
"lon": 121.5
},
"order": "asc",
"unit": "km"
}
}
]
}
案例3
对酒店数据按照用户评价降序排序,评价相同的按照价格升序排序
GET /hotel/_search
{
"query":{
"match_all": {}
},
"sort": [
{
"score": {
"order": "desc"
}
},
{
"price": {
"order": "asc"
}
}
]
}