目录

 HTTP操作

索引操作

创建索引

查看所有索引

查看单个索引

删除索引

文档操作

创建文档

查看文档

修改文档

修改字段

删除文档

条件删除文档

映射操作

创建映射

查看映射

索引映射关联

高级查询

查询所有文档

匹配查询

字段匹配查询

关键字精确查询

多关键字精确查询

指定查询字段

过滤字段

组合查询

范围查询

模糊查询

单字段排序

多字段排序

高亮查询

分页查询

聚合查询

桶聚合查询


 HTTP操作

索引操作

创建索引

对比关系型数据库,创建索引就等同于创建数据库

在 Postman中,向ES服务器发PUT请求 :http://127.0.0.1:9200/shopping

es getLowLevelClient查询 es http查询_Postman

请求后,服务器返回响应

es getLowLevelClient查询 es http查询_服务器_02

es getLowLevelClient查询 es http查询_Postman_03

{
【响应结果】: true, # true操作成功
【分片结果】: true, # 分片操作成功
【索引名称】: "shopping"
}

# 注意:创建索引库的分片数默认1片,在7.0.0之前的Elasticsearch版本中,默认5片

如果重复添加索引,会返回错误信息

es getLowLevelClient查询 es http查询_elasticsearch_04

es getLowLevelClient查询 es http查询_字段_05

查看所有索引

在 Postman中,向ES服务器发GET请求 :http://127.0.0.1:9200/_cat/indices?v

es getLowLevelClient查询 es http查询_elasticsearch_06

这里请求路径中的_cat表示查看的意思,indices表示索引,所以整体含义就是查看当前ES服务器中的所有索引,就好像MySQL中的show tables的感觉,服务器响应结果如下

es getLowLevelClient查询 es http查询_字段_07

es getLowLevelClient查询 es http查询_elasticsearch_08

表头

含义

health

当前服务器健康状态:

green(集群完整) yellow(单点正常、集群不完整) red(单点不正常)

status

索引打开、关闭状态

index

索引名

uuid

索引统一编号

pri

主分片数量

rep

副本数量

docs.count

可用文档数量

docs.deleted

文档删除状态(逻辑删除)

store.size

主分片和副分片整体占空间大小

pri.store.size

主分片占空间大小

查看单个索引

在 Postman中,向ES服务器发GET请求 :http://127.0.0.1:9200/shopping

es getLowLevelClient查询 es http查询_Postman_09

查看索引向ES服务器发送的请求路径和创建索引是一致的。但是HTTP方法不一致。这里可以体会一下RESTful的意义,

请求后,服务器响应结果如下:

es getLowLevelClient查询 es http查询_字段_10

es getLowLevelClient查询 es http查询_服务器_11

{
【索引名】: {       
【别名】: {},
【映射】: {},
【设置】: {
【设置 - 索引】: {
【设置 - 索引 - 创建时间】: "1614265373911",
【设置 - 索引 - 主分片数量】: "1",
【设置 - 索引 - 副分片数量】: "1",
【设置 - 索引 - 唯一标识】: "eI5wemRERTumxGCc1bAk2A",
【设置 - 索引 - 版本】: {
                    "created": "7080099"
                },
【设置 - 索引 - 名称】: "shopping"
            }
        }
    }
}

删除索引

在 Postman中,向ES服务器发DELETE请求 :http://127.0.0.1:9200/shopping

es getLowLevelClient查询 es http查询_字段_12

es getLowLevelClient查询 es http查询_服务器_13

重新访问索引时,服务器返回响应:索引不存在

es getLowLevelClient查询 es http查询_elasticsearch_14

es getLowLevelClient查询 es http查询_字段_15

es getLowLevelClient查询 es http查询_elasticsearch_16

文档操作

创建文档

索引已经创建好了,接下来我们来创建文档,并添加数据。这里的文档可以类比为关系型数据库中的表数据,添加的数据格式为JSON格式

在 Postman中,向ES服务器发POST请求 :http://127.0.0.1:9200/shopping/_doc

请求体内容为:

{
    "title":"小米手机",
    "category":"小米",
    "images":"http://www.gulixueyuan.com/xm.jpg",
    "price":3999.00


}es getLowLevelClient查询 es http查询_服务器_17

es getLowLevelClient查询 es http查询_字段_18

此处发送请求的方式必须为POST,不能是PUT,否则会发生错误

es getLowLevelClient查询 es http查询_字段_19

es getLowLevelClient查询 es http查询_服务器_20

服务器响应结果如下:

es getLowLevelClient查询 es http查询_字段_21

es getLowLevelClient查询 es http查询_服务器_22

{
【索引】: "shopping",
【类型-文档】: "_doc",
【唯一标识】: "Xhsa2ncBlvF_7lxyCE9G", #可以类比为MySQL中的主键,随机生成
【版本】: 1,
【结果】: "created", #这里的create表示创建成功
【分片】: {
【分片 - 总数】: 2,
【分片 - 成功】: 1,
【分片 - 失败】: 0
    },
    "_seq_no": 0,
    "_primary_term": 1
}

上面的数据创建后,由于没有指定数据唯一性标识(ID),默认情况下,ES服务器会随机生成一个。

如果想要自定义唯一性标识,需要在创建时指定:http://127.0.0.1:9200/shopping/_doc/1

es getLowLevelClient查询 es http查询_Postman_23

es getLowLevelClient查询 es http查询_Postman_24

es getLowLevelClient查询 es http查询_服务器_25

es getLowLevelClient查询 es http查询_elasticsearch_26

此处需要注意:如果增加数据时明确数据主键,那么请求方式也可以为PUT

查看文档

查看文档时,需要指明文档的唯一性标识,类似于MySQL中数据的主键查询

在 Postman中,向ES服务器发GET请求 :http://127.0.0.1:9200/shopping/_doc/1

es getLowLevelClient查询 es http查询_字段_27

es getLowLevelClient查询 es http查询_Postman_28

查询成功后,服务器响应结果:

es getLowLevelClient查询 es http查询_elasticsearch_29

es getLowLevelClient查询 es http查询_Postman_30

{
【索引】: "shopping",
【文档类型】: "_doc",
    "_id": "1",
    "_version": 2,
    "_seq_no": 2,
    "_primary_term": 2,
【查询结果】: true, # true表示查找到,false表示未查找到
【文档源信息】: {
        "title": "华为手机",
        "category": "华为",
        "images": "http://www.gulixueyuan.com/hw.jpg",
        "price": 4999.00
    }
}

修改文档

和新增文档一样,输入相同的URL地址请求,如果请求体变化,会将原有的数据内容覆盖

在 Postman中,向ES服务器发POST请求 :http://127.0.0.1:9200/shopping/_doc/1

请求体内容为:

{
    "title":"华为手机",
    "category":"华为",
    "images":"http://www.gulixueyuan.com/hw.jpg",
    "price":4999.00
}

es getLowLevelClient查询 es http查询_Postman_31

es getLowLevelClient查询 es http查询_字段_32

修改成功后,服务器响应结果:      

es getLowLevelClient查询 es http查询_Postman_33

es getLowLevelClient查询 es http查询_字段_34

{
    "_index": "shopping",
    "_type": "_doc",
    "_id": "1",
【版本】: 2,
【结果】: "updated", # updated表示数据被更新
    "_shards": {
        "total": 2,
        "successful": 1,
        "failed": 0
    },
    "_seq_no": 2,
    "_primary_term": 2
}

修改字段

修改数据时,也可以只修改某一给条数据的局部信息

在 Postman中,向ES服务器发POST请求 :http://127.0.0.1:9200/shopping/_update/1

请求体内容为:

{
  "doc": {
    "price":3000.00
  }
}

es getLowLevelClient查询 es http查询_Postman_35

es getLowLevelClient查询 es http查询_字段_36

修改成功后,服务器响应结果:

es getLowLevelClient查询 es http查询_字段_37

根据唯一性标识,查询文档数据,文档数据已经更新   

es getLowLevelClient查询 es http查询_Postman_38

删除文档

删除一个文档不会立即从磁盘上移除,它只是被标记成已删除(逻辑删除)。

在 Postman中,向ES服务器发DELETE请求 :http://127.0.0.1:9200/shopping/_doc/1

es getLowLevelClient查询 es http查询_服务器_39

删除成功,服务器响应结果:   

es getLowLevelClient查询 es http查询_elasticsearch_40

es getLowLevelClient查询 es http查询_elasticsearch_41

{
    "_index": "shopping",
    "_type": "_doc",
    "_id": "1",
【版本】: 4, #对数据的操作,都会更新版本
【结果】: "deleted", # deleted表示数据被标记为删除
    "_shards": {
        "total": 2,
        "successful": 1,
        "failed": 0
    },
    "_seq_no": 4,
    "_primary_term": 2
}

删除后再查询当前文档信息

es getLowLevelClient查询 es http查询_字段_42

es getLowLevelClient查询 es http查询_服务器_43

es getLowLevelClient查询 es http查询_Postman_44

es getLowLevelClient查询 es http查询_服务器_45

如果删除一个并不存在的文档   

es getLowLevelClient查询 es http查询_服务器_46

es getLowLevelClient查询 es http查询_服务器_47

es getLowLevelClient查询 es http查询_elasticsearch_48

es getLowLevelClient查询 es http查询_Postman_49

{
    "_index": "shopping",
    "_type": "_doc",
    "_id": "1",
    "_version": 1,
【结果】: "not_found", # not_found表示未查找到
    "_shards": {
        "total": 2,
        "successful": 1,
        "failed": 0
    },
    "_seq_no": 5,
    "_primary_term": 2
}

条件删除文档

一般删除数据都是根据文档的唯一性标识进行删除,实际操作时,也可以根据条件对多条数据进行删除

首先分别增加多条数据:

{
    "title":"小米手机",
    "category":"小米",
    "images":"http://www.gulixueyuan.com/xm.jpg",
    "price":4000.00
}

{
    "title":"华为手机",
    "category":"华为",
    "images":"http://www.gulixueyuan.com/hw.jpg",
    "price":4000.00
}

es getLowLevelClient查询 es http查询_字段_50

es getLowLevelClient查询 es http查询_服务器_51

es getLowLevelClient查询 es http查询_Postman_52

es getLowLevelClient查询 es http查询_字段_53

向ES服务器发POST请求 :http://127.0.0.1:9200/shopping/_delete_by_query

请求体内容为:

{
  "query":{
    "match":{
      "price":4000.00
    }
  }
}

es getLowLevelClient查询 es http查询_服务器_54

es getLowLevelClient查询 es http查询_Postman_55

删除成功后,服务器响应结果:      

es getLowLevelClient查询 es http查询_elasticsearch_56

es getLowLevelClient查询 es http查询_字段_57

{
【耗时】: 175,
【是否超时】: false,
【总数】: 2,
【删除数量】: 2,
    "batches": 1,
    "version_conflicts": 0,
    "noops": 0,
    "retries": {
        "bulk": 0,
        "search": 0
    },
    "throttled_millis": 0,
    "requests_per_second": -1.0,
    "throttled_until_millis": 0,
    "failures": []
}

映射操作

有了索引库,等于有了数据库中的database。

接下来就需要建索引库(index)中的映射了,类似于数据库(database)中的表结构(table)。创建数据库表需要设置字段名称,类型,长度,约束等;索引库也一样,需要知道这个类型下有哪些字段,每个字段有哪些约束信息,这就叫做映射(mapping)。

创建映射

在 Postman中,向ES服务器发PUT请求 :http://127.0.0.1:9200/student/_mapping

请求体内容为:

{
  "properties": {
    "name":{
      "type": "text",
      "index": true
    },
    "sex":{
      "type": "text",
      "index": false
    },
    "age":{
      "type": "long",
      "index": false
    }
  }
}

es getLowLevelClient查询 es http查询_服务器_58

服务器响应结果如下:

es getLowLevelClient查询 es http查询_elasticsearch_59

es getLowLevelClient查询 es http查询_Postman_60

映射数据说明:

  1. 字段名:任意填写,下面指定许多属性,例如:title、subtitle、images、price
  2. type:类型,Elasticsearch中支持的数据类型非常丰富,说几个关键的:
  3. String类型,又分两种:

text:可分词

keyword:不可分词,数据会作为完整字段进行匹配

  1. Numerical:数值类型,分两类

基本数据类型:long、integer、short、byte、double、float、half_float

浮点数的高精度类型:scaled_float

  1. Date:日期类型
  2. Array:数组类型
  3. Object:对象
  4. index:是否索引,默认为true,也就是说你不进行任何配置,所有字段都会被索引。

true:字段会被索引,则可以用来进行搜索

false:字段不会被索引,不能用来搜索

  1. store:是否将数据进行独立存储,默认为false

原始的文本会存储在_source里面,默认情况下其他提取出来的字段都不是独立存储的,是从_source里面提取出来的。当然你也可以独立的存储某个字段,只要设置"store": true即可,获取独立存储的字段要比从_source中解析快得多,但是也会占用更多的空间,所以要根据实际业务需求来设置。

  1. analyzer:分词器,这里的ik_max_word即使用ik分词器,后面会有专门的章节学习

查看映射

在 Postman中,向ES服务器发GET请求 :http://127.0.0.1:9200/student/_mapping

es getLowLevelClient查询 es http查询_服务器_61

服务器响应结果如下:

es getLowLevelClient查询 es http查询_字段_62

es getLowLevelClient查询 es http查询_服务器_63

索引映射关联

在 Postman中,向ES服务器发PUT请求 :http://127.0.0.1:9200/student1

{
  "settings": {},
  "mappings": {
      "properties": {
        "name":{
          "type": "text",
          "index": true
         
        },
        "sex":{
          "type": "text",
          "index": false
        },
        "age":{
          "type": "long",
          "index": false
        }
      }
  }
}

es getLowLevelClient查询 es http查询_Postman_64

es getLowLevelClient查询 es http查询_服务器_65

服务器响应结果如下:

es getLowLevelClient查询 es http查询_字段_66

es getLowLevelClient查询 es http查询_Postman_67

高级查询

Elasticsearch提供了基于JSON提供完整的查询DSL来定义查询

定义数据 :

# POST /student/_doc/1001

{
"name":"zhangsan",
"nickname":"zhangsan",
    "sex":"男",
    "age":30
}
# POST /student/_doc/1002
{
"name":"lisi",
"nickname":"lisi",
    "sex":"男",
    "age":20
}
# POST /student/_doc/1003
{
"name":"wangwu",
    "nickname":"wangwu",
    "sex":"女",
    "age":40
}
# POST /student/_doc/1004
{
"name":"zhangsan1",
"nickname":"zhangsan1",
    "sex":"女",
    "age":50
}
# POST /student/_doc/1005
{
"name":"zhangsan2",
"nickname":"zhangsan2",
    "sex":"女",
    "age":30
}

查询所有文档

在 Postman中,向ES服务器发GET请求 :http://127.0.0.1:9200/student/_search

{
  "query": {
    "match_all": {}
  }
}

# "query":这里的query代表一个查询对象,里面可以有不同的查询属性

# "match_all":查询类型,例如:match_all(代表查询所有), match,term , range 等等

# {查询条件}:查询条件会根据类型的不同,写法也有差异

es getLowLevelClient查询 es http查询_elasticsearch_68

es getLowLevelClient查询 es http查询_字段_69

服务器响应结果如下:

es getLowLevelClient查询 es http查询_字段_70

es getLowLevelClient查询 es http查询_服务器_71

es getLowLevelClient查询 es http查询_服务器_72

es getLowLevelClient查询 es http查询_Postman_73

{
【查询花费时间,单位毫秒】" : 1116,
【是否超时】" : false,
【分片信息】" : {
【总数】" : 1,
【成功】" : 1,
【忽略】" : 0,
【失败】" : 0
  },
【搜索命中结果】" : {
【搜索条件匹配的文档总数】: {
【总命中计数的值】: 3,
【计数规则】: "eq" # eq 表示计数准确, gte表示计数不准确
     },
【匹配度分值】" : 1.0,
【命中结果集合】" : [
       。。。
      }
    ]
  }
}

匹配查询

match匹配类型查询,会把查询条件进行分词,然后进行查询,多个词条之间是or的关系

在 Postman中,向ES服务器发GET请求 :http://127.0.0.1:9200/student/_search

{
  "query": {
    "match": {
        "name":"zhangsan"
    }
  }
}

es getLowLevelClient查询 es http查询_服务器_74

es getLowLevelClient查询 es http查询_服务器_75

服务器响应结果为:

字段匹配查询

multi_match与match类似,不同的是它可以在多个字段中查询。

在 Postman中,向ES服务器发GET请求 :http://127.0.0.1:9200/student/_search

{
  "query": {
    "multi_match": {
        "query": "zhangsan",
        "fields": ["name","nickname"]
    }
  }
}

es getLowLevelClient查询 es http查询_服务器_76

es getLowLevelClient查询 es http查询_字段_77

服务器响应结果:

es getLowLevelClient查询 es http查询_elasticsearch_78

es getLowLevelClient查询 es http查询_elasticsearch_79

关键字精确查询

term查询,精确的关键词匹配查询,不对查询条件进行分词。

在 Postman中,向ES服务器发GET请求 :http://127.0.0.1:9200/student/_search

{
  "query": {
    "term": {
      "name": {
        "value": "zhangsan"
      }
    }
  }
}

es getLowLevelClient查询 es http查询_字段_80

服务器响应结果:

es getLowLevelClient查询 es http查询_字段_81

多关键字精确查询

terms 查询和 term 查询一样,但它允许你指定多值进行匹配。

如果这个字段包含了指定值中的任何一个值,那么这个文档满足条件,类似于mysql的in

在 Postman中,向ES服务器发GET请求 :http://127.0.0.1:9200/student/_search

{
  "query": {
    "terms": {
      "name": ["zhangsan","lisi"]
    }
  }
}

es getLowLevelClient查询 es http查询_字段_82

服务器响应结果:

es getLowLevelClient查询 es http查询_字段_83

指定查询字段

默认情况下,Elasticsearch在搜索的结果中,会把文档中保存在_source的所有字段都返回。

如果我们只想获取其中的部分字段,我们可以添加_source的过滤

在 Postman中,向ES服务器发GET请求 :http://127.0.0.1:9200/student/_search

{
  "_source": ["name","nickname"], 
  "query": {
    "terms": {
      "nickname": ["zhangsan"]
    }
  }
}

es getLowLevelClient查询 es http查询_elasticsearch_84

服务器响应结果:

es getLowLevelClient查询 es http查询_字段_85

过滤字段

我们也可以通过:

  • includes:来指定想要显示的字段
  • excludes:来指定不想要显示的字段

在 Postman中,向ES服务器发GET请求 :http://127.0.0.1:9200/student/_search

{
  "_source": {
includes": ["name","nickname"]
  }, 
  "query": {
    "terms": {
      "nickname": ["zhangsan"]
    }
  }
}

es getLowLevelClient查询 es http查询_字段_86

服务器响应结果:

es getLowLevelClient查询 es http查询_服务器_87

在 Postman中,向ES服务器发GET请求 :http://127.0.0.1:9200/student/_search

{
  "_source": {
excludes": ["name","nickname"]
  }, 
  "query": {
    "terms": {
      "nickname": ["zhangsan"]
    }
  }
}

es getLowLevelClient查询 es http查询_Postman_88

服务器响应结果:

es getLowLevelClient查询 es http查询_服务器_89

组合查询

`bool`把各种其它查询通过`must`(必须 )、`must_not`(必须不)、`should`(应该)的方式进行组合

在 Postman中,向ES服务器发GET请求 :http://127.0.0.1:9200/student/_search

{
  "query": {
    "bool": {
must": [
        {
          "match": {
            "name": "zhangsan"
          }
        }
      ],
must_not": [
        {
          "match": {
            "age": "40"
          }
        }
      ],
should": [
        {
          "match": {
            "sex": "男"
          }
        }
      ]
    }
  }
}

es getLowLevelClient查询 es http查询_字段_90

服务器响应结果:

es getLowLevelClient查询 es http查询_服务器_91

范围查询

range 查询找出那些落在指定区间内的数字或者时间。range查询允许以下字符

操作符

说明

gt

大于>

gte

大于等于>=

lt

小于<

lte

小于等于<=

在 Postman中,向ES服务器发GET请求 :http://127.0.0.1:9200/student/_search

{
  "query": {
    "range": {
      "age": {
        "gte": 30,
        "lte": 35
      }
    }
  }
}

es getLowLevelClient查询 es http查询_服务器_92

服务器响应结果:

es getLowLevelClient查询 es http查询_elasticsearch_93

模糊查询

返回包含与搜索字词相似的字词的文档。

编辑距离是将一个术语转换为另一个术语所需的一个字符更改的次数。这些更改可以包括:

  1. 更改字符(box → fox)
  2. 删除字符(black → lack)
  3. 插入字符(sic → sick)
  4. 转置两个相邻字符(act → cat)

为了找到相似的术语,fuzzy查询会在指定的编辑距离内创建一组搜索词的所有可能的变体或扩展。然后查询返回每个扩展的完全匹配。

通过fuzziness修改编辑距离。一般使用默认值AUTO,根据术语的长度生成编辑距离。

在 Postman中,向ES服务器发GET请求 :http://127.0.0.1:9200/student/_search

{
  "query": {
    "fuzzy": {
      "title": {
        "value": "zhangsan"
      }
    }
  }
}

es getLowLevelClient查询 es http查询_Postman_94

服务器响应结果:

es getLowLevelClient查询 es http查询_服务器_95

在 Postman中,向ES服务器发GET请求 :http://127.0.0.1:9200/student/_search

{
  "query": {
    "fuzzy": {
      "title": {
        "value": "zhangsan",
        "fuzziness": 2
      }
    }
  }
}

es getLowLevelClient查询 es http查询_elasticsearch_96

服务器响应结果:

es getLowLevelClient查询 es http查询_服务器_97

es getLowLevelClient查询 es http查询_Postman_98

单字段排序

sort 可以让我们按照不同的字段进行排序,并且通过order指定排序的方式。desc降序,asc升序。

在 Postman中,向ES服务器发GET请求 :http://127.0.0.1:9200/student/_search

{
  "query": {
    "match": {
        "name":"zhangsan"
    }
  },
  "sort": [{
    "age": {
        "order":"desc"
    }
  }]
}

es getLowLevelClient查询 es http查询_服务器_99

服务器响应结果:

es getLowLevelClient查询 es http查询_elasticsearch_100

多字段排序

假定我们想要结合使用 age和 _score进行查询,并且匹配的结果首先按照年龄排序,然后按照相关性得分排序

在 Postman中,向ES服务器发GET请求 :http://127.0.0.1:9200/student/_search

{
  "query": {
    "match_all": {}
  },
  "sort": [
    {
      "age": {
        "order": "desc"
      }
    },
    {
      "_score":{
        "order": "desc"
      }
    }
  ]
}

es getLowLevelClient查询 es http查询_elasticsearch_101

服务器响应结果:

es getLowLevelClient查询 es http查询_服务器_102

高亮查询

在进行关键字搜索时,搜索出的内容中的关键字会显示不同的颜色,称之为高亮。

  • 在百度搜索"京东"

es getLowLevelClient查询 es http查询_elasticsearch_103

es getLowLevelClient查询 es http查询_服务器_104

Elasticsearch可以对查询内容中的关键字部分,进行标签和样式(高亮)的设置。

在使用match查询的同时,加上一个highlight属性:

  1. pre_tags:前置标签
  2. post_tags:后置标签
  3. fields:需要高亮的字段
  4. title:这里声明title字段需要高亮,后面可以为这个字段设置特有配置,也可以空

在 Postman中,向ES服务器发GET请求 :http://127.0.0.1:9200/student/_search

{
  "query": {
    "match": {
      "name": "zhangsan"
    }
  },
  "highlight": {
    "pre_tags": "<font color='red'>",
    "post_tags": "</font>",
    "fields": {
      "name": {}
    }
  }
}

es getLowLevelClient查询 es http查询_服务器_105

服务器响应结果:

es getLowLevelClient查询 es http查询_elasticsearch_106

分页查询

from:当前页的起始索引,默认从0开始。 from = (pageNum - 1) * size

size:每页显示多少条

在 Postman中,向ES服务器发GET请求 :http://127.0.0.1:9200/student/_search

{
  "query": {
    "match_all": {}
  },
  "sort": [
    {
      "age": {
        "order": "desc"
      }
    }
  ],
  "from": 0,
  "size": 2
}

es getLowLevelClient查询 es http查询_字段_107

服务器响应结果:

es getLowLevelClient查询 es http查询_服务器_108

聚合查询

聚合允许使用者对es文档进行统计分析,类似与关系型数据库中的group by,当然还有很多其他的聚合,例如取最大值、平均值等等。

  • 对某个字段取最大值max

在 Postman中,向ES服务器发GET请求 :http://127.0.0.1:9200/student/_search

{
    "aggs":{
      "max_age":{
        "max":{"field":"age"}
      }
    },
    "size":0
}

es getLowLevelClient查询 es http查询_Postman_109

服务器响应结果:

es getLowLevelClient查询 es http查询_Postman_110

  • 对某个字段取最小值min

在 Postman中,向ES服务器发GET请求 :http://127.0.0.1:9200/student/_search

{
    "aggs":{
      "min_age":{
        "min":{"field":"age"}
      }
    },
    "size":0
}

es getLowLevelClient查询 es http查询_Postman_111

服务器响应结果:

es getLowLevelClient查询 es http查询_字段_112

  • 对某个字段求和sum

在 Postman中,向ES服务器发GET请求 :http://127.0.0.1:9200/student/_search

{
    "aggs":{
      "sum_age":{
        "sum":{"field":"age"}
      }
    },
    "size":0
}

es getLowLevelClient查询 es http查询_服务器_113

服务器响应结果:

es getLowLevelClient查询 es http查询_Postman_114

  • 对某个字段取平均值avg

在 Postman中,向ES服务器发GET请求 :http://127.0.0.1:9200/student/_search

{
    "aggs":{
      "avg_age":{
        "avg":{"field":"age"}
      }
    },
    "size":0
}

es getLowLevelClient查询 es http查询_字段_115

服务器响应结果:

es getLowLevelClient查询 es http查询_服务器_116

  • 对某个字段的值进行去重之后再取总数

在 Postman中,向ES服务器发GET请求 :http://127.0.0.1:9200/student/_search

{
    "aggs":{
      "distinct_age":{
        "cardinality":{"field":"age"}
      }
    },
    "size":0
}

es getLowLevelClient查询 es http查询_服务器_117

服务器响应结果:

es getLowLevelClient查询 es http查询_Postman_118

  • State聚合

stats聚合,对某个字段一次性返回count,max,min,avg和sum五个指标

在 Postman中,向ES服务器发GET请求 :http://127.0.0.1:9200/student/_search

{
    "aggs":{
      "stats_age":{
        "stats":{"field":"age"}
      }
    },
    "size":0
}

es getLowLevelClient查询 es http查询_字段_119

服务器响应结果:

es getLowLevelClient查询 es http查询_字段_120

桶聚合查询

桶聚和相当于sql中的group by语句

  • terms聚合,分组统计

在 Postman中,向ES服务器发GET请求 :http://127.0.0.1:9200/student/_search

{
    "aggs":{
      "age_groupby":{
        "terms":{"field":"age"}
      }
    },
    "size":0
}

es getLowLevelClient查询 es http查询_elasticsearch_121

服务器响应结果:

es getLowLevelClient查询 es http查询_Postman_122

  • 在terms分组下再进行聚合

在 Postman中,向ES服务器发GET请求 :http://127.0.0.1:9200/student/_search

{
    "aggs":{
      "age_groupby":{
        "terms":{"field":"age"}
      }
    },
    "size":0
}

es getLowLevelClient查询 es http查询_字段_123

服务器响应结果:

 es getLowLevelClient查询 es http查询_服务器_124

es getLowLevelClient查询 es http查询_字段_125