ElasticSearch 学习记录之ES查询添加排序字段和使用missing或existing字段查询

ElasticSearch 系列文章

1 ES 入门之一 安装ElasticSearcha

2 ES 记录之如何建立一个索引映射

3 ElasticSearch 学习记录之Text keyword 两种基本类型区别

4 ES 入门记录之 match和term查询的区别

5 ElasticSearch 学习记录之ES几种常见的聚合操做

6 ElasticSearch 学习记录之父子结构的查询

7 ElasticSearch 学习记录之ES查询添加排序字段和使用missing或existing字段查询

8 ElasticSearch 学习记录之ES高亮搜索

9 ElasticSearch 学习记录之ES短语匹配基本用法

10 ElasticSearch 学习记录之 分布式文档存储往ES中存数据和取数据的原理

11 ElasticSearch 学习记录之集群分片内部原理

12 ElasticSearch 学习记录之ES如何操做Lucene段

13 ElasticSearch 学习记录之如任何设计可扩容的索引结构

14 ElasticSearch之 控制相关度原理讲解







ES添加排序

在默认的状况下,ES 是根据文档的得分score来进行文档额排序的。可是本身能够根据本身的针对一些字段进行排序。就像下面的查询脚本同样。下面的这个查询是根据productid这个值进行排序的,并且进行了双字段的排序。当productid 相同时的文档是根据下面的那个排序字段进行的排序html

POST /product/_search
{
  "query": {
    "bool": {
      "filter": {
        "term": {
          "productSource": "2"
        }
      }
    }
  },
  "sort": [
    {
      "productId": {
        "order": "desc"
      }
    },
    {
      "_score":{
        "order": "desc"
      } 
    }
  ]
}
ES missing 和existing字段
missing字段的查询是查那些不存在的字段的数据

POST /product/_search
{
  "query": {
    "bool": {
      "filter": {
        "missing": {
          "field": "weight"
        }
      }
    }
  }
}

existing是查询那些已经存在字段的数据  
POST /product/_search
{
  "query": {
    "bool": {
      "filter": {
        "exists": {
          "field": "weight"
        }
      }
    }
  }
}