一、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增删改查-冯金伟博客园

在ES中数据是如下存放的
六、对ES增删改查-冯金伟博客园

_index索引对应MySQL中的库
_type类型对应MySQL中的表
_id对应MySQL中的id
_score是评分,显示搜索结果的优先级,优先级高的结果优先显示

在ES中插入数据,如下图所示
六、对ES增删改查-冯金伟博客园

资料:官方文档

二、查看ES数据库

1、使用kibana控制台

打开主页–>控制台
六、对ES增删改查-冯金伟博客园

如下图所示,PUT表示新键,linux表示索引,_doc表示类型,1表示id号;
name表示key,tz表示值,数据是json格式的;
六、对ES增删改查-冯金伟博客园

我们可以使用es-head插件查看插入的数据
点击数据浏览–>linux
六、对ES增删改查-冯金伟博客园

kibana的历史记录也很好用,可以看到之前执行过的命令

2、使用curl命令

es中内置了很多方便监控的模块,如查看健康状态使用GET /_cat/health

$ curl -v 10.154.0.110:9200/_cat/health

六、对ES增删改查-冯金伟博客园

也可在浏览器中使用
六、对ES增删改查-冯金伟博客园

在kibana中可以查看内置的查询模块
六、对ES增删改查-冯金伟博客园

3、使用es-head插件

这是我们创建的索引
六、对ES增删改查-冯金伟博客园

里面有一行数据
六、对ES增删改查-冯金伟博客园

数据内容如下
六、对ES增删改查-冯金伟博客园

三、操作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控制台界面操作
六、对ES增删改查-冯金伟博客园

修改id号插入第2条数据
六、对ES增删改查-冯金伟博客园

使用es-head插件查看插入的数据
六、对ES增删改查-冯金伟博客园

2)使用随机ID插入数据
在POST请求方法下,不指定ID新键数据会随机产生一串数据作为id号
六、对ES增删改查-冯金伟博客园

在es-head下查看
六、对ES增删改查-冯金伟博客园

2、查询数据

先插入测试数据,可以使用ctrl+A全选,一起运行
六、对ES增删改查-冯金伟博客园

1)查询所有

GET linux/_search/

hits表示命中,共命中4条数据,数据都是以json格式显示的
六、对ES增删改查-冯金伟博客园

2)条件查询
查询name为tz996的数据

GET linux/_search
{
  "query": {
    "term": {
      "name": {
        "value": "tz996"
      }
    }
  }
}

六、对ES增删改查-冯金伟博客园

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表示必须要有的字段

查询结果
六、对ES增删改查-冯金伟博客园

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"
}

六、对ES增删改查-冯金伟博客园

可以看到数据已经更新
六、对ES增删改查-冯金伟博客园

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

效果如下
六、对ES增删改查-冯金伟博客园

三、postman软件使用

大概长这个样子,以后抽时间研究一下
六、对ES增删改查-冯金伟博客园

参考资料
老男孩教育_day104_视频

今天的学习是为了以后的工作更加的轻松!