02-DSL操作Elasticsearch入门

立山  金牌会员 | 2022-8-30 19:26:15 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 916|帖子 916|积分 2748

六、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,最大值为263263integer带符号的32为整数,其最小值为-231231,最大值为231231short带符号的16位整数,其最小值为-32,768,最大值为32,767byte带符号的8位整数,其最小值位-128,最大值为127double双精度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、操作映射

添加映射


  • 命令

      1. # 创建带映射(表结构)的索引库
      2. PUT person
      3. {
      4.   "mappings": {
      5.     "properties": {
      6.       "name":{
      7.         "type": "text"
      8.       },
      9.       "age":{
      10.         "type": "integer"
      11.       }
      12.     }
      13.   }
      14.   
      15. }
      复制代码

  • 如下所示



查询映射


  • 命令

      1. GET person/_mapping
      复制代码

  • 如下所示



添加字段


  • 命令

      1. PUT person/_mapping
      2. {
      3.   "properties":{
      4.     "sex":{
      5.       "type":"keyword"
      6.     }
      7.   }
      8. }
      复制代码

  • 如下所示



  • 再次查询映射



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

6.4.1、添加文档


  • 命令

      1. # 指定id
      2. POST person/_doc/1
      3. {
      4.   "name":"张三",
      5.   "age":18,
      6.   "sex":"男"
      7. }
      8. # 不指定id
      9. POST person/_doc
      10. {
      11.   "name":"翠花",
      12.   "age":20,
      13.   "sex":"女"
      14. }
      复制代码

  • 如下所示

    • 指定id



    • 不指定id




6.4.2、查询文档


  • 命令

      1. GET person/_doc/1    # 查询一个
      2. GET person/_search   # 查询全部
      复制代码

  • 如下所示

    • 查询一个



    • 查询所有




6.4.3、修改文档


  • 命令

      1. PUT person/_doc/1
      2. {
      3.   "name":"如花",
      4.   "age":20,
      5.   "sex":"女"
      6. }
      复制代码

  • 如下所示



  • 记得之前说过的

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


6.4.4、删除文档


  • 命令

      1. DELETE person/_doc/1
      复制代码

  • 如下所示




免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

立山

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表