六、对ES增删改查
一、ES的数据结构
ES跟MySQL有很大的区别,现在将MySQL跟ES做对比,这样方便理解。
因为ES数据库是通过API接口进行访问的,访问的方式有如下几种
1、es-head插件
2、kibana控制台
3、curl命令
4、Postman工具
1、ES数据库结构对比
MySQL术语 | ES术语 |
---|---|
库,databases | 索引,index |
表,tables | 类型,_doc |
字段(列) | json格式的key |
值 | json格式的value |
行 | 文档,doc |
MySQL中的库在ES中叫索引,MySQL表在es中叫类型,以此类推
2、操作ES数据库命令对比
命令含义 | ES | MySQL |
---|---|---|
查看 | GET | select |
上传、新键 | POST | insert,create |
更新 | PUT | update |
删除 | DELETE | DELETE |
MySQL中的查看在ES中使用GET命令,以此类推
3、MySQL的数据在es中存放形式
在MySQL中是通过表的形式存放数据的,如下图所示
在ES中数据是如下存放的
_index索引对应MySQL中的库
_type类型对应MySQL中的表
_id对应MySQL中的id
_score是评分,显示搜索结果的优先级,优先级高的结果优先显示
在ES中插入数据,如下图所示
资料:官方文档
二、查看ES数据库
1、使用kibana控制台
打开主页-->控制台
如下图所示,PUT表示新键,linux表示索引,_doc表示类型,1表示id号;
name表示key,tz表示值,数据是json格式的;
我们可以使用es-head插件查看插入的数据
点击数据浏览-->linux
kibana的历史记录也很好用,可以看到之前执行过的命令
2、使用curl命令
es中内置了很多方便监控的模块,如查看健康状态使用GET /_cat/health
$ curl -v 10.154.0.110:9200/_cat/health
也可在浏览器中使用
在kibana中可以查看内置的查询模块
3、使用es-head插件
这是我们创建的索引
里面有一行数据
数据内容如下
三、操作ES数据库
1、插入数据
1)使用自定义ID插入数据
curl本质上使用的是请求方法向es数据库中插入或查询数据
curl命令操作
$ curl -XPUT 'http://10.154.0.110:9200/linux/_doc/1' -H 'Content-Type:application/json' -d '
{
"name":"tz",
"age":"68"
}'
-X:指定请求类型
-H:修改请求头数据
-d:上传数据
kinbana控制台界面操作
修改id号插入第2条数据
使用es-head插件查看插入的数据
2)使用随机ID插入数据
在POST请求方法下,不指定ID新键数据会随机产生一串数据作为id号
在es-head下查看
2、查询数据
先插入测试数据,可以使用ctrl+A全选,一起运行
1)查询所有
GET linux/_search/
hits表示命中,共命中4条数据,数据都是以json格式显示的
2)条件查询
查询name为tz996的数据
GET linux/_search
{
"query": {
"term": {
"name": {
"value": "tz996"
}
}
}
}
3)多条件查询
#条件1
address是GZ
#条件2
job是ops
#条件3
age>=21 && age<=24
#查询语句
GET linux/_search
{
"query": {
"bool":{
"must": [
{
"term": {
"address.keyword": "GZ"
}
},
{
"term": {
"job.keyword": "ops"
}
},
{
"range": {
"age.keyword": {
"gte": 21,
"lte": 24
}
}
}
]
}
}
}
#bool里有must,must表示必须要有的字段
查询结果
3、更新数据
1)根据自定义id更新
#使用PUT命令
PUT linux/_doc/1
{
"name" : "tz996",
"age" : "29",
"address" : "GZ",
"job" : "dev"
}
#POST命令也能更新
POST linux/_doc/1
{
"name" : "tz997",
"age" : "33",
"address" : "GZ",
"job" : "dev"
}
可以看到数据已经更新
2)随机ID更新
需要先根据字段查到随机ID,然后根据随机ID修改数据
#先查到tz996的随机ID
GET linux/_search
{
"query": {
"term": {
"name": {
"value": "tz996"
}
}
}
}
#根据随机ID再修改数据
POST linux/_doc/8jbqkHsBtAovAB3B-W6A
{
"name" : "tz997",
"age" : "33",
"address" : "GZ",
"job" : "dev"
}
4、删除数据
先查到指定ID,然后根据指定ID删除数据
GET linux/_search
{
"query": {
"term": {
"name": {
"value": "tz996"
}
}
}
}
DELETE linux/_doc/8jbqkHsBtAovAB3B-W6A
效果如下
三、postman软件使用
大概长这个样子,以后抽时间研究一下
参考资料
老男孩教育_day104_视频