1. 程式人生 > >ElasticSearch 6.x 學習筆記:20.搜尋排序

ElasticSearch 6.x 學習筆記:20.搜尋排序

20.1 按照文件新增順序排序

GET website/_search

GET website/_search
{
  "query": {
    "match_all": {}
  }
}

20.2 按照文件相關度評分排序

GET website/_search
{
  "query": {
    "term": {
      "title": {
        "value": "centos"
      }
    }
  }
}

查詢結果

{
  "took": 3,
  "timed_out": false,
  "_shards": {
    "total": 5
, "successful": 5, "skipped": 0, "failed": 0 }
, "hits": { "total": 2, "max_score": 0.9227539, "hits": [ { "_index": "website", "_type": "blog", "_id": "6", "_score": 0.9227539, "_source": { "title": "CentOS更換國內yum源", "author
": "程裕強", "postdate": "2016-12-30", "abstract": "CentOS更換國內yum源", "url": "http://url/53946911" }
}, { "_index": "website", "_type": "blog", "_id": "3", "_score": 0.2876821, "_source": { "title": "CentOS升級gcc"
, "author": "程裕強", "postdate": "2016-12-25", "abstract": "CentOS升級gcc", "url": "http://url/53868915" }
} ]
}
}

20.3 指定欄位排序

【例子】按照postdate日期降序排序

GET website/_search
{
  "query": {
    "match_all": {}
  }, 
  "sort": [
    {"postdate":{"order":"desc"}}
  ]
}
{
  "took": 51,
  "timed_out": false,
  "_shards": {
    "total": 5,
    "successful": 5,
    "skipped": 0,
    "failed": 0
  },
  "hits": {
    "total": 8,
    "max_score": null,
    "hits": [
      {
        "_index": "website",
        "_type": "blog",
        "_id": "8",
        "_score": null,
        "_source": {
          "title": "es高亮",
          "author": "程裕強",
          "postdate": "2017-01-03",
          "abstract": "Elasticsearch查詢關鍵字高亮",
          "url": "http://url/53991802"
        },
        "sort": [
          1483401600000
        ]
      },
      {
        "_index": "website",
        "_type": "blog",
        "_id": "5",
        "_score": null,
        "_source": {
          "title": "libstdc++.so.6",
          "author": "程裕強",
          "postdate": "2016-12-30",
          "abstract": "libstdc++.so.6問題解決",
          "url": "http://url/53946911"
        },
        "sort": [
          1483056000000
        ]
      },
      {
        "_index": "website",
        "_type": "blog",
        "_id": "6",
        "_score": null,
        "_source": {
          "title": "CentOS更換國內yum源",
          "author": "程裕強",
          "postdate": "2016-12-30",
          "abstract": "CentOS更換國內yum源",
          "url": "http://url/53946911"
        },
        "sort": [
          1483056000000
        ]
      },
      {
        "_index": "website",
        "_type": "blog",
        "_id": "7",
        "_score": null,
        "_source": {
          "title": "搭建Ember開發環境",
          "author": "程裕強",
          "postdate": "2016-12-30",
          "abstract": "CentOS系統下搭建Ember開發環境",
          "url": "http://url/53947507"
        },
        "sort": [
          1483056000000
        ]
      },
      {
        "_index": "website",
        "_type": "blog",
        "_id": "4",
        "_score": null,
        "_source": {
          "title": "vmware複製虛擬機器",
          "author": "程裕強",
          "postdate": "2016-12-29",
          "abstract": "vmware複製虛擬機器",
          "url": "http://url/53946664"
        },
        "sort": [
          1482969600000
        ]
      },
      {
        "_index": "website",
        "_type": "blog",
        "_id": "3",
        "_score": null,
        "_source": {
          "title": "CentOS升級gcc",
          "author": "程裕強",
          "postdate": "2016-12-25",
          "abstract": "CentOS升級gcc",
          "url": "http://url/53868915"
        },
        "sort": [
          1482624000000
        ]
      },
      {
        "_index": "website",
        "_type": "blog",
        "_id": "2",
        "_score": null,
        "_source": {
          "title": "watchman原始碼編譯",
          "author": "程裕強",
          "postdate": "2016-12-23",
          "abstract": "CentOS7.x的watchman原始碼編譯",
          "url": "http://url.cn/53844169"
        },
        "sort": [
          1482451200000
        ]
      },
      {
        "_index": "website",
        "_type": "blog",
        "_id": "1",
        "_score": null,
        "_source": {
          "title": "Ambari原始碼編譯",
          "author": "程裕強",
          "postdate": "2016-12-21",
          "abstract": "CentOS7.x下的Ambari2.4原始碼編譯",
          "url": "http://url.cn/53788351"
        },
        "sort": [
          1482278400000
        ]
      }
    ]
  }
}

20.4 多欄位排序

【例子】salary降序,age升序
(1)準備資料

PUT my-index

PUT my-index/persion/1
{
  "name":"張三",
  "age":20,
  "salary":6000
}

PUT my-index/persion/2
{
  "name":"李四",
  "age":20,
  "salary":8000
}

PUT my-index/persion/3
{
  "name":"王五",
  "age":21,
  "salary":6000
}
PUT my-index/persion/4
{
  "name":"劉六",
  "age":21,
  "salary":8000
}

(2)salary降序,age升序

GET my-index/_search
{
  "sort": [
    {"salary":{"order":"desc"}},
    {"age":{"order":"asc"}}
  ]
}
{
  "took": 3,
  "timed_out": false,
  "_shards": {
    "total": 5,
    "successful": 5,
    "skipped": 0,
    "failed": 0
  },
  "hits": {
    "total": 4,
    "max_score": null,
    "hits": [
      {
        "_index": "my-index",
        "_type": "persion",
        "_id": "2",
        "_score": null,
        "_source": {
          "name": "李四",
          "age": 20,
          "salary": 8000
        },
        "sort": [
          8000,
          20
        ]
      },
      {
        "_index": "my-index",
        "_type": "persion",
        "_id": "4",
        "_score": null,
        "_source": {
          "name": "劉六",
          "age": 21,
          "salary": 8000
        },
        "sort": [
          8000,
          21
        ]
      },
      {
        "_index": "my-index",
        "_type": "persion",
        "_id": "1",
        "_score": null,
        "_source": {
          "name": "張三",
          "age": 20,
          "salary": 6000
        },
        "sort": [
          6000,
          20
        ]
      },
      {
        "_index": "my-index",
        "_type": "persion",
        "_id": "3",
        "_score": null,
        "_source": {
          "name": "王五",
          "age": 21,
          "salary": 6000
        },
        "sort": [
          6000,
          21
        ]
      }
    ]
  }
}

20.5 分片影響評分