• 六、对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_视频

    今天的学习是为了以后的工作更加的轻松!
  • 相关阅读:
    搭建php环境时解决jpeg6 make: ./libtool:命令未找到
    configure: error: zlib not installed
    南京呼叫中心防火墙配置(备份)
    检查Linux Bash安全漏洞以及各环境修复解决方法
    Linux 内核升级步骤
    CentOS 7没有ifconfig命令处理
    linux kickstart 自动安装
    red hat Linux 使用CentOS yum源更新
    -bash: ./job.sh: /bin/sh^M: bad interpreter: 没有那个文件或目录
    linux LNMP自动安装脚本
  • 原文地址:https://www.cnblogs.com/tz90/p/15202644.html
Copyright © 2020-2023  润新知