:::tips ElasticSearch默认是根据相关度算分(_score)来排序,同时也支持自定义方式对搜索结果排序,可以排序字段类型有:keyword类型、数值类型、地理坐标类型、日期类型等 :::

普通字段排序

:::tips 普通字段排序中keyword、数值、日期类型排序的语法基本一致 :::

  1. GET /索引库名/_search
  2. {
  3. "query": {
  4. "match_all": {}
  5. },
  6. "sort": [
  7. {
  8. "字段名": "排序方式" //指定排序字段和排序方式,排序方式:ASCDESC
  9. }
  10. ]
  11. }

地理坐标排序

:::tips 地理坐标排序:

  • 指定一个坐标,作为目标点
  • 计算每一个文档中指定字段(必须是geo_point类型)的坐标到目标点的距离
  • 根据距离排序 :::
    1. GET /索引库名/_search
    2. {
    3. "query": {
    4. "match_all": {}
    5. },
    6. "sort": [
    7. {
    8. "_geo_distance" : {
    9. "字段名" : "纬度,经度", //文档中geo_point类型的字段名 经纬度
    10. "order" : "排序方式", //指定排序方式,排序方式:ASCDESC
    11. "unit" : "距离单位" //排序的距离单位:mkm...
    12. }
    13. }
    14. ]
    15. }