https://www.elastic.co/guide/en/elasticsearch/reference/8.17/sort-search-results.html
它详细介绍了如何在 Elasticsearch 中对搜索结果进行排序,包括按字段排序、地理距离排序、脚本排序、嵌套字段排序等多种排序方式。以下是网页的主要内容总结,特别关注数值型字段排序及其可能存在的问题:
---
1.按字段排序(Field Sorting)
Elasticsearch 允许对一个或多个字段进行排序,支持升序(`asc`)和降序(`desc`)。
示例:
```json
GET /my-index-000001/_search
{
"sort": [
{ "post_date": { "order": "asc" } },
{ "name": { "order": "desc" } }
],
"query": { "term": { "user": "kimchy" } }
}
```
2.特殊字段排序
• `_score`:按相关性分数排序。
• `_doc`:按索引顺序排序,这是最高效的排序方式,适用于不需要特定排序逻辑的场景。
3.优化排序性能
• 避免对`text`类型字段排序,推荐使用`keyword`或数值类型字段。
• 可以通过索引时的预排序(index sorting)来优化查询时的排序性能。
4.多值字段排序(Multi-Value Fields)
支持多值字段的排序,可以通过`mode`参数选择排序值(如`min`、`max`、`avg`、`sum`、`median`)。
示例:
```json
GET /my-index-000001/_search
{
"sort": [
{ "price": { "o