一、环境准备
操作系统:mac
依赖的软件:JDK1.8、Postman、NodeJs6.0以上、Maven、Idea
ES下载:Elastic官方网站: http://www.elastic.co 、版本:elasticsearch-7.1.0-darwin-x86_64.tar
集群模式:一主两从,集群安装参考:https://www.cnblogs.com/liuxiaoming123/p/8081883.html
ES可视化管理插件:GitHub上寻找:elasticsearch-head
二、实际操作
1. 启动集群
进入到各自的bin目录
sh ./elasticsearch
2. 启动管理插件
在这个插件目录下:npm run start
3. 实际操作
API基本格式:http://ip:port/索引/类型/文档id
常用http动词:GET/PUT/POST/DELETE
目录:
一、索引创建
1. 非结构化创建
2. 结构化创建
二、插入
1. 指定文档ID插入
2. 自动产生文档ID插入
三、修改
1. 直接修改文档
2. 脚本修改文档
四、删除
1. 删除文档
2. 删除索引
五、查询
1. 简单查询
2. 条件查询
3. 聚合查询
正文:
一、索引创建
1. 非结构化创建
1.1 浏览器输入:localhost:9100
![](https://img2018.cnblogs.com/blog/1165129/201908/1165129-20190818002952508-682596975.png)
1.2 点索引tab页,并创建索引
![](https://img2018.cnblogs.com/blog/1165129/201908/1165129-20190818003150878-2100054749.png)
输入索引名称:task,分片数:5,副本数: 1,点OK
![](https://img2018.cnblogs.com/blog/1165129/201908/1165129-20190818003328264-570689069.png)
弹出如下提示:表示创建成功,点确定
![](https://img2018.cnblogs.com/blog/1165129/201908/1165129-20190818003343227-1446730983.png)
出现下图:
![](https://img2018.cnblogs.com/blog/1165129/201908/1165129-20190818003358073-98914531.png)
1.3 在预览中查看
![](https://img2018.cnblogs.com/blog/1165129/201908/1165129-20190818003519824-339735761.png)
1.4 点索引信息,查看结构化和非结构化索引信息
![](https://img2018.cnblogs.com/blog/1165129/201908/1165129-20190818003844345-1274330455.png)
![](https://img2018.cnblogs.com/blog/1165129/201908/1165129-20190818003909650-327345463.png)
2. 结构化创建
2.1 点击 复合查询
2.2 加入:task/novel/_mappers
{ "novel": { "properties": { "title": { "type": "text" } } } }
2.3 勾选易读
2.4点击 验证JSON
2.5点击 提交请求
![](https://img2018.cnblogs.com/blog/1165129/201908/1165129-20190818004139783-1239689398.png)
2.6 点击概览,刷新页面
![](https://img2018.cnblogs.com/blog/1165129/201908/1165129-20190818004212082-459432893.png)
2.7 在postman中编写json字符串(采取put提交方式提交)
注意:从7.0版本及之后的版本写法和之前的版本有很大的区别
在Elasticsearch 7.0.0或更高版本中创建的索引可能只包含单个映射类型。在具有多种映射类型的5.x中创建的索引将继续像以前一样在Elasticsearch 6.x中运行。映射类型将在Elasticsearch 7.0.0中完全删除
![](https://img2018.cnblogs.com/blog/1165129/201908/1165129-20190818004301598-511467221.png)
2.8 刷新页面,看索引信息中的mapping
![](https://img2018.cnblogs.com/blog/1165129/201908/1165129-20190818004358765-828159158.png)
![](https://img2018.cnblogs.com/blog/1165129/201908/1165129-20190818004413353-359721145.png)
mappings不为空,为结构化创建索引
二、插入
1. 指定文档ID插入
postman中的请求:127.0.0.1:9200/people/_doc/1
请求内容:
{
"name":"小宋",
"country":"china",
"age":26,
"date":"1992-08-08"
}
![](https://img2018.cnblogs.com/blog/1165129/201908/1165129-20190818004524587-1189942548.png)
控制台刷新
![](https://img2018.cnblogs.com/blog/1165129/201908/1165129-20190818004756818-620742510.png)
进行数据浏览,看插入的数据
![](https://img2018.cnblogs.com/blog/1165129/201908/1165129-20190818004807139-1591884633.png)
2. 自动产生文档ID插入
postman输入(post请求):127.0.0.1:9200/people/_doc/
写入内容
{
"name":"小宋自动生产",
"country":"china",
"age":26,
"date":"1992-08-08"
}
![](https://img2018.cnblogs.com/blog/1165129/201908/1165129-20190818004829573-694342382.png)
刷新控制台
![](https://img2018.cnblogs.com/blog/1165129/201908/1165129-20190818004840589-1146658944.png)
看数据预览
![](https://img2018.cnblogs.com/blog/1165129/201908/1165129-20190818004850910-881835962.png)
三、修改
1. 直接修改文档
postman输入(post):127.0.0.1:9200/people/_doc/1/_update
修改内容
{
"doc":{
"name":"小宋-天地玄黄"
}
}
点send,看一下
![](https://img2018.cnblogs.com/blog/1165129/201908/1165129-20190818005245922-1761556962.png)
刷新一下数据浏览,id=1的 name 被修改了
![](https://img2018.cnblogs.com/blog/1165129/201908/1165129-20190818005256579-1474824760.png)
2. 脚本修改文档
1)方式一:
postman中输入(post):127.0.0.1:9200/people/_doc/1/_update
修改内容
{
"script":{
"lang":"painless",
"inline":"ctx._source.age += 10"
}
}
send执行:
![](https://img2018.cnblogs.com/blog/1165129/201908/1165129-20190818005315797-861232614.png)
刷新控制台,看数据浏览
![](https://img2018.cnblogs.com/blog/1165129/201908/1165129-20190818005328134-894244672.png)
2)方式二
postman输入(post):127.0.0.1:9200/people/_doc/1/_update
修改内容:
{
"script":{
"lang":"painless",
"inline":"ctx._source.age = params.age",
"params":{
"age":100
}
}
}
send执行
![](https://img2018.cnblogs.com/blog/1165129/201908/1165129-20190818005340883-2037478782.png)
控制台刷新,看数据浏览,age变成了100
![](https://img2018.cnblogs.com/blog/1165129/201908/1165129-20190818005353745-1138502920.png)
四、删除
1. 删除文档
概览中,点people下的动作,展开列表,看删除,
![](https://img2018.cnblogs.com/blog/1165129/201908/1165129-20190818005409796-600701635.png)
点删除,弹出删除确认对话框,需要输入“删除”两个字,才能删除
![](https://img2018.cnblogs.com/blog/1165129/201908/1165129-20190818005419285-1912422092.png)
2. 删除索引
postman输入(delete):127.0.0.1:9200/people/_doc/1
删除时,不需要输入内容
执行send
![](https://img2018.cnblogs.com/blog/1165129/201908/1165129-20190818005429753-1568437131.png)
五、查询
1. 简单查询
postman输入(get):127.0.0.1:9200/people/_doc/1
不用输入内容:
执行send,看查询结果
![](https://img2018.cnblogs.com/blog/1165129/201908/1165129-20190818005453229-575386021.png)
2. 条件查询
match_all 是全部查询
query 是查询关键字
from 是从哪里查
size 是显示多少条数据
sort 是排序设置
1)方式1,查询全部
postman输入(post):127.0.0.1:9200/people/_search
查询条件:
{
"query":{
"match_all":{}
},
"from":1,
"size":3
}
查询全部,match_all 为 {}
![](https://img2018.cnblogs.com/blog/1165129/201908/1165129-20190818005512311-2097974656.png)
![](https://img2018.cnblogs.com/blog/1165129/201908/1165129-20190818005616179-1223824349.png)
2)方式2:按关键字查询
postman中输入(post):127.0.0.1:9200/people/_search
查询条件:
{
"query":{
"match":{
"name":"小宋"
}
},
"sort":[
{"_id":"desc"}
]
}
people中带小宋的,都查询出来,并且按id排倒叙
![](https://img2018.cnblogs.com/blog/1165129/201908/1165129-20190818005735242-1610492460.png)
![](https://img2018.cnblogs.com/blog/1165129/201908/1165129-20190818005629967-242628059.png)
3. 聚合查询
聚合提供了用户进行分组和数理统计的能力,可以把聚合理解成SQL中的GROUP BY和分组函数
指标聚合/桶聚合
Metrics(度量/指标):简单的对过滤出来的数据集进行avg,max操作,是一个单一的数值
Bucket(桶):将过滤出来的数据集按条件分成多个小数据集,然后Metrics会分别作用在这些小数据集上
postman输入(post):127.0.0.1:9200/people/_search
查询条件:
{
"aggs":{
"group_by_date":{
"terms":{
"field":"date"
}
},
"group_by_age":{
"terms":{
"field":"age"
}
}
}
}
执行send
返回结果
![](https://img2018.cnblogs.com/blog/1165129/201908/1165129-20190818005803062-478427291.png)
![](https://img2018.cnblogs.com/blog/1165129/201908/1165129-20190818005813407-2118155355.png)
![](https://img2018.cnblogs.com/blog/1165129/201908/1165129-20190818005822030-2099748369.png)