文章目录
数据格式
 
  
 
HTTP操作
索引操作
-  创建索引 -  响应 { "acknowledged"【响应结果】: true, # true 操作成功 "shards_acknowledged"【分片结果】: true, # 分片操作成功 "index"【索引名称】: "shopping" }
-  说明 - 请求方式需要为PUT
- 二次重复添加索引请求会报错
 
 
-  
-  查看单个索引 -  响应 { "shopping"【索引名】: { "aliases"【别名】: {}, "mappings"【映射】: {}, "settings"【设置】: { "index"【设置 - 索引】: { "creation_date"【设置 - 索引 - 创建时间】: "1614265373911", "number_of_shards"【设置 - 索引 - 主分片数量】: "1", "number_of_replicas"【设置 - 索引 - 副分片数量】: "1", "uuid"【设置 - 索引 - 唯一标识】: "eI5wemRERTumxGCc1bAk2A", "version"【设置 - 索引 - 版本】: {"created": "7080099"}, "provided_name"【设置 - 索引 - 名称】: "shopping" } } } }
 
-  
-  查看所有索引 -  参数说明 -  _cat表示查看的意思
-  indices表示索引
 
-  
-  响应   
-  说明   
 
-  
-  删除索引 -  响应   
 
-  
映射操作
-  创建映射 -  请求 { "properties": { "name": { "type": "text", "index": true }, "sex": { "type": "text", "index": false }, "age": { "type": "long", "index": false } } }
-  请求说明 -  字段名:任意填写,例如name、sex、age 
-  数据类型(type) - String 类型,分两种 
        - text:可分词
- keyword:不可分词,数据会作为完整字段进行匹配,精准匹配的
 
- Numerical:数值类型,分两类 
        - 基本数据类型:long、integer、short、byte、double、float、half_float
- 浮点数的高精度类型:scaled_float
 
- Date:日期类型
- Array:数组类型
- Object:对象
 
- String 类型,分两种 
        
-  是否索引(index) - true:字段会被索引,则可以用来进行搜索
- false:字段不会被索引,不能用来搜索
 
-  是否独立存储(store) 
-  分词器(analyzer) 
 
-  
-  响应   
 
-  
-  查看映射 -  响应   
 
-  
-  索引映射关联 - 请求
 { "settings": {}, "mappings": { "properties": { "name": { "type": "text", "index": true }, "sex": { "type": "text", "index": false }, "age": { "type": "long", "index": false } } } }-  响应   
 
文档操作(添加数据)
-  创建文档 -  说明 -  shopping:上面创建好的索引
-  多次请求,会生成不同的ID,即不是幂等性的操作,不能使用put请求。 
-  http://127.0.0.1:9200/shopping/_doc/1:最后那个1,指定唯一性标识(ID),默认情况下,ES服务器会自动生成一个,在响应体里有体现。
-  如果明确了数据主键,也即是指定了ID,请求方式也可以是PUT请求 
 
-  
-  请求 { "title":"小米手机", "category":"小米", "images":"http://www.gulixueyuan.com/xm.jpg", "price":3999.00 }
-  响应 { "_index"【索引】: "shopping", "_type"【类型-文档】: "_doc", "_id"【唯一标识】: "Xhsa2ncBlvF_7lxyCE9G", #可以类比为 MySQL 中的主键,随机生成 "_version"【版本】: 1, "result"【结果】: "created", #这里的 create 表示创建成功 "_shards"【分片】: { "total"【分片 - 总数】: 2, "successful"【分片 - 成功】: 1, "failed"【分片 - 失败】: 0 }, "_seq_no": 0, "_primary_term": 1 }
 
-  
-  查看文档 -  说明 - 需要指定文档的唯一性标识(ID)
 
-  查询所有 
-  响应 { "_index"【索引】: "shopping", "_type"【文档类型】: "_doc", "_id": "1", "_version": 2, "_seq_no": 2, "_primary_term": 2, "found"【查询结果】: true, # true 表示查找到,false 表示未查找到 "_source"【文档源信息】: { "title": "华为手机", "category": "华为", "images": "http://www.gulixueyuan.com/hw.jpg", "price": 4999.00 } }
 
-  
-  修改文档 -  请求 { "title":"华为手机", "category":"华为", "images":"http://www.gulixueyuan.com/hw.jpg", "price":4999.00 }
-  响应 { "_index": "shopping", "_type": "_doc", "_id": "1", "_version"【版本】: 2, "result"【结果】: "updated", # updated 表示数据被更新 "_shards": { "total": 2, "successful": 1, "failed": 0 }, "_seq_no": 2, "_primary_term": 2 }
 
-  
-  局部修改文档 -  请求 { "doc": { "price":3000.00 } }
-  响应   
 
-  
-  删除文档 -  响应 { "_index": "shopping", "_type": "_doc", "_id": "1", "_version"【版本】: 4, #对数据的操作,都会更新版本 "result"【结果】: "deleted", # deleted 表示数据被标记为删除 "_shards": { "total": 2, "successful": 1, "failed": 0 }, "_seq_no": 4, "_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 }
-  请求 { "query":{ "match":{ "price":4000.00 } } }
-  响应 { "took"【耗时】: 175, "timed_out"【是否超时】: false, "total"【总数】: 2, "deleted"【删除数量】: 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": [] }
 
-  
高级查询
定义数据
# 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 
}
查询所有文档
-  请求 { "query": { "match_all": {} } }
-  请求说明 - “query”:这里的 query 代表一个查询对象,里面可以有不同的查询属性
- “match_all”:查询类型,例如:match_all(代表查询所有), match,term , range 等等
- {查询条件}:查询条件会根据类型的不同,写法也有差异
 
-  响应 { "took【查询花费时间,单位毫秒】" : 1116, "timed_out【是否超时】" : false, "_shards【分片信息】" : { "total【总数】" : 1, "successful【成功】" : 1, "skipped【忽略】" : 0, "failed【失败】" : 0 }, "hits【搜索命中结果】" : { "total"【搜索条件匹配的文档总数】: { "value"【总命中计数的值】: 3, "relation"【计数规则】: "eq" # eq 表示计数准确, gte 表示计数不准确 }, "max_score【匹配度分值】" : 1.0, "hits【命中结果集合】" : [ {}... ] } }
匹配查询
-  请求 { "query": { "match": {"name":"zhangsan"} } }
-  响应   
多字段匹配查询
-  请求 { "query": { "multi_match": { "query": "zhangsan", "fields": ["name","nickname"] } } }
-  响应   
关键字精确查询
-  请求 { "query": { "term": { "name": {"value": "zhangsan"} } } }
-  响应   
多关键字精确查询
-  请求 { "query": { "terms": { "name": ["zhangsan","lisi"] } } }
-  响应   
指定查询字段
-  请求 { "_source": ["name","nickname"], "query": { "terms": { "nickname": ["zhangsan"] } } }
-  响应   
过滤字段
-  includes请求 { "_source": { "includes": ["name","nickname"] }, "query": { "terms": { "nickname": ["zhangsan"] } } }
-  includes响应   
-  excludes请求 { "_source": { "excludes": ["name","nickname"] }, "query": { "terms": { "nickname": ["zhangsan"] } } }
-  excludes响应   
组合查询
-  请求 { "query": { "bool": { "must": [ { "match": { "name": "zhangsan" } } ], "must_not": [ { "match": { "age": "40" } } ], "should": [ { "match": { "sex": "男" } } ] } } }
-  响应   
范围查询
-  操作符   
-  请求 { "query": { "range": { "age": { "gte": 30, "lte": 35 } } } }
-  响应   
模糊查询*
-  说明 
-  不修改编辑距离请求 { "query": { "fuzzy": { "title": { "value": "zhangsan" } } } }
-  不修改编辑距离响应   
-  修改编辑距离请求 { "query": { "fuzzy": { "title": { "value": "zhangsan", "fuzziness": 2 } } } }
-  修改编辑距离响应   
单字段排序
-  说明 sort 可以让我们按照不同的字段进行排序,并且通过 order 指定排序的方式。desc 降序,asc 升序。
-  请求 { "query": { "match": { "name": "zhangsan" } }, "sort": [ { "age": { "order": "desc" } } ] }
-  响应   
多字段排序
-  说明 
-  请求 { "query": { "match_all": {} }, "sort": [ { "age": { "order": "desc" } }, { "_score": { "order": "desc" } } ] }
-  响应   
高亮查询
-  highlight 属性 - pre_tags:前置标签
- post_tags:后置标签
- fields:需要高亮的字段
- title:这里声明 title 字段需要高亮,后面可以为这个字段设置特有配置,也可以空
 
-  请求 { "query": { "match": { "name": "zhangsan" } }, "highlight": { "pre_tags": "<font color='red'>", "post_tags": "</font>", "fields": { "name": {} } } }
-  响应   
分页查询
-  参数控制 - from:当前页的起始索引,默认从 0 开始。 from = (pageNum - 1) * size
- size:每页显示多少条
 
-  请求 { "query": { "match_all": {} }, "sort": [ { "age": { "order": "desc" } } ], "from": 0, "size": 2 }
-  响应   
聚合查询
对某个字段取最大值 max
-  请求 { "aggs": { "max_age": { "max": { "field": "age" } } }, "size": 0 }
-  响应   
对某个字段取最小值 min
-  请求 { "aggs": { "min_age": { "min": { "field": "age" } } }, "size": 0 }
-  响应   
对某个字段求和 sum
-  请求 { "aggs": { "sum_age": { "sum": { "field": "age" } } }, "size": 0 }
-  响应   
对某个字段取平均值 avg
-  请求 { "aggs": { "avg_age": { "avg": { "field": "age" } } }, "size": 0 }
-  响应   
对某个字段的值进行去重之后再取总数
-  请求 { "aggs": { "distinct_age": { "cardinality": { "field": "age" } } }, "size": 0 }
-  响应   
State 聚合
-  请求 { "aggs": { "stats_age": { "stats": { "field": "age" } } }, "size": 0 }
-  响应   
桶聚合查询(分组)
terms 聚合,分组统计
-  请求 { "aggs": { "age_groupby": { "terms": { "field": "age" } } }, "size": 0 }
-  响应   
在 terms 分组下再进行聚合
-  请求 { "aggs": { "age_groupby": { "terms": { "field": "age" } } }, "size": 0 }
-  响应   










