es的排序同sql,可以desc也可以asc。也支持组合排序。
实操:

  1. POST /shop/_doc/_search
  2. {
  3. "query": {
  4. "match": {
  5. "desc": "慕课网游戏"
  6. }
  7. },
  8. "post_filter": {
  9. "range": {
  10. "money": {
  11. "gt": 55.8,
  12. "lte": 155.8
  13. }
  14. }
  15. },
  16. "sort": [
  17. {
  18. "age": "desc"
  19. },
  20. {
  21. "money": "desc"
  22. }
  23. ]
  24. }

对文本排序

由于文本会被分词,所以往往要去做排序会报错,通常我们可以为这个字段增加额外的一个附属属性,类型为keyword,用于做排序。

  • 创建新的索引 ```shell POST /shop2/_mapping { “properties”: {
    1. "id": {
    2. "type": "long"
    3. },
    4. "nickname": {
    5. "type": "text",
    6. "analyzer": "ik_max_word",
    7. "fields": {
    8. "keyword": {
    9. "type": "keyword"
    10. }
    11. }
    12. }
    } }
  1. - 插入数据
  2. ```shell
  3. POST /shop2/_doc
  4. {
  5. "id": 1001,
  6. "nickname": "美丽的风景"
  7. }
  8. {
  9. "id": 1002,
  10. "nickname": "漂亮的小哥哥"
  11. }
  12. {
  13. "id": 1003,
  14. "nickname": "飞翔的巨鹰"
  15. }
  16. {
  17. "id": 1004,
  18. "nickname": "完美的天空"
  19. }
  20. {
  21. "id": 1005,
  22. "nickname": "广阔的海域"
  23. }
  • 排序 ```shell { “sort”: [
    1. {
    2. "nickname.keyword": "desc"
    3. }
    ] }

```