:::tips ElasticSearch默认是根据相关度算分(_score)来排序,同时也支持自定义方式对搜索结果排序,可以排序字段类型有:keyword类型、数值类型、地理坐标类型、日期类型等 :::
普通字段排序
:::tips 普通字段排序中keyword、数值、日期类型排序的语法基本一致 :::
GET /索引库名/_search
{
"query": {
"match_all": {}
},
"sort": [
{
"字段名": "排序方式" //指定排序字段和排序方式,排序方式:ASC、DESC
}
]
}
地理坐标排序
:::tips 地理坐标排序:
- 指定一个坐标,作为目标点
- 计算每一个文档中指定字段(必须是geo_point类型)的坐标到目标点的距离
- 根据距离排序
:::
GET /索引库名/_search
{
"query": {
"match_all": {}
},
"sort": [
{
"_geo_distance" : {
"字段名" : "纬度,经度", //文档中geo_point类型的字段名 经纬度
"order" : "排序方式", //指定排序方式,排序方式:ASC、DESC
"unit" : "距离单位" //排序的距离单位:m、km...
}
}
]
}