六、DSL操作ES

6.1、RESTful风格介绍

  • REST(Representational State Transfer 表述性状态转移),是一组架构约束条件和原则,满足这些约束条件和原则的应用程序或设计就是RESTful。就是一种定义接口的规范。有以下特征:
    • 基于HTTP
    • 可以使用XML格式定义或JSON格式定义参数和返回值。
    • 每一个URI代表1种资源。
    • 客户端使用GET、POST、PUT、DELETE 4个表示操作方式的动词对服务端资源进行操作
      • GET:用来获取资源
      • POST:用来新建资源(也可以用于更新资源)
      • PUT:用来新建资源
      • DELETE:用来删除资源
  • 假设现在有有一个/user资源
    • get: /user/1 :查询
    • delete: /user/1 :删除
    • post: /user :添加、修改
    • put: /user :添加、修改

6.2、DSL操作ES-操作索引库

相当于MySQL的数据库

6.2.1、添加索引

  • 命令
    • PUT goods_index
  • 如下所示

6.2.2、查询索引

  • 命令
    • GET goods_index
  • 如下所示

6.2.3、删除索引

  • 命令
    • delete goods_index
  • 如下所示

6.2.4、关闭索引

PS:当索引处于关闭状态,是不能添加文档的

  • 命令
    • POST goods_index/_close
  • 如下所示

6.2.5、打开索引

  • 命令
    • POST goods_index/_open
  • 如下所示

6.3、DSL操作ES-操作映射

6.3.1、数据类型

了解ES中字段有那些数据类型

  • ES中包含两类数据类型:简单数据类型和复杂数据类型

1)简单数据类型

  • 字符串

    • 类型 说明
      text 可以分词,不支持聚合(统计)
      keyword 不会分词,将全部内容作为一个词条,支持聚合(统计)
    • 例如:有个文档(相当于表中的一条数据,其中一个字段的值是华为手机

      • text:华为、手机
      • keyword:华为手机
  • 数值(不一定分词)

    • 类型 说明
      long 带符号的64位数其最小值为-263263,最大值为263263
      integer 带符号的32为整数,其最小值为-231231,最大值为231231
      short 带符号的16位整数,其最小值为-32,768,最大值为32,767
      byte 带符号的8位整数,其最小值位-128,最大值为127
      double 双精度64位IEEE 754浮点数,限制为有限制
      float 单精度32位IEEE 754浮点数,限制为有限制
      half_float 半精度IEEE 754浮点数,限制为有限制
      scale_float 由a支持的有限浮点数long,由固定double比例因子缩放
    • 布尔类型

      • boolean
    • 二进制

      • binary
    • 日期

      • date
    • 范围类型

      • integer_range
      • float_range
      • long_range
      • double_range
      • date_range

2)复杂数据类型

  • 数组
    • 没有专用的array数据类型,任何一个字段的值,都可以被添加0个到多个,但是要求它们的类型必须一直,当类型一致,含有多个值存储到ES中会自动转化成数组类型
  • 对象
    • 如下所示

3)GEO数据类型

  • 地理位置坐标值
    • geo_point

6.3.2、操作映射

添加映射

  • 命令

    • # 创建带映射(表结构)的索引库
      PUT person
      {
        "mappings": {
          "properties": {
            "name":{
              "type": "text"
            },
            "age":{
              "type": "integer"
            }
          }
        }
        
      }
      
  • 如下所示

查询映射

  • 命令

    • GET person/_mapping
      
  • 如下所示

添加字段

  • 命令

    • PUT person/_mapping
      {
        "properties":{
          "sex":{
            "type":"keyword"
          }
        }
      }
      
  • 如下所示

  • 再次查询映射

  • PS:ES不能单独修改映射字段名称或类型,也不能单独删除某个字段,如果需要修改,直接删除整个索引库再重建

6.4、DSL操作ES-操作文档

6.4.1、添加文档

  • 命令

    • # 指定id
      POST person/_doc/1
      {
        "name":"张三",
        "age":18,
        "sex":"男"
      }
      
      # 不指定id
      POST person/_doc
      {
        "name":"翠花",
        "age":20,
        "sex":"女"
      }
      
  • 如下所示

    • 指定id
    • 不指定id

6.4.2、查询文档

  • 命令

    • GET person/_doc/1    # 查询一个
      
      GET person/_search   # 查询全部
      
  • 如下所示

    • 查询一个
    • 查询所有

6.4.3、修改文档

  • 命令

    • PUT person/_doc/1
      {
        "name":"如花",
        "age":20,
        "sex":"女"
      }
      
  • 如下所示

  • 记得之前说过的

    • ES不能单独修改映射字段名称或类型,也不能单独删除某个字段,如果需要修改,直接删除整个索引库再重建

6.4.4、删除文档

  • 命令

    • DELETE person/_doc/1
      
  • 如下所示

内容来源于网络如有侵权请私信删除
你还没有登录,请先登录注册
  • 还没有人评论,欢迎说说您的想法!