es: 指定排序字段和顺序

一,默认的排序字段_score

_score在elasticsearch中代表文档与搜索查询的匹配程度。
当执行一个搜索请求时,Elasticsearch会根据相关性得分_score来排序返回的结果

如果想根据相关性得分 _score 来排序结果,可以在查询时指定 score ,并将其设置为 asc 或 desc 来指示升序或降序排序。

下面一个Elasticsearch查询示例演示了如何根据 _score 进行排序

GET /_search
{
  "query": {
    "match": {
      "message": "elasticsearch"
    }
  },
  "sort": [
    {
      "_score": {
        "order": "asc"
      }
    }
  ]
}

如果想使用默认的排序,不需要在查询中指定任何排序参数。
例:下面的Elasticsearch查询将使用默认的排序方式:

GET /your_index/_search
{
  "query": {
    "match": {
      "your_field": "your_query"
    }
  }
}

二,自定义排序字段

如果想要在查询中指定额外的排序条件,可以使用sort参数。
例如,如果想要按照文档的date字段排序,你可以这样写:

GET /your_index/_search
{
  "query": {
    "match": {
      "your_field": "your_query"
    }
  },
  "sort": [
    {
      "date": {
        "order": "asc"
      }
    }
  ]
}

也可以指定多个排序字段,例如:

GET /your_index/_search
{
  "query": {
    "match": {
      "your_field": "your_query"
    }
  },
  "sort": [
    {"date": {"order": "asc"}},     //第一排序
    {"_score": {"order": "desc"}}   //第二排序
  ]
}

 

posted @ 2024-07-25 16:40  刘宏缔的架构森林  阅读(23)  评论(0编辑  收藏  举报