您的位置:首页 > 其它

ElasticSearch 数据操作

2022-01-10 23:39 134 查看 https://www.cnblogs.com/juno35

[TOC]


RESTful 风格

  • REST(Representational State Transfer,表述性状态转移)是一组架构约束条件和原则,而满足这些约束条件和原则的应用程序或设计就是 RESTful,其本质就是一种定义接口的规范。

  • 基于 HTTP 。

  • 使用 XML 或 JSON 的格式定义。

  • 每一个 URI 代表一种资源。

  • 客户端使用 GET、POST、PUT、DELETE 这 4 种表示操作方式的动词对服务端资源进行操作:

    GET:获取资源
  • POST:新建资源(也可以更新资源)
  • PUT:更新资源
  • DELETE:删除资源

ES 数据类型

简单数据类型

  • 字符串

    text:会分词,不支持聚合(相当于 mysql 中的 sum)
  • keyword:不会分词,将全部内容作为一个词条,支持聚合
  • 数值

  • 布尔值(boolean)

  • 二进制(binary)

  • 范围(range)

      integer_range
    • float_range
    • long_range
    • double_range
    • date_range
  • 日期(date)

  • 复杂数据类型

    • 数组 [ ]
      :数组类型的 JSON 对象(for arrays of JSON objects)

    • 对象 { }
      :单个 JSON 对象(for single JSON objects)


    操作索引

    使用 Kibana

    # 添加索引
    PUT 索引名称  # 或 PUT /索引名称
    
    # 查询索引
    # 查询单个索引信息
    GET 索引名称
    # 查询多个索引信息
    GET 索引名称1,索引名称2,...
    # 查询所有索引信息
    GET _all  # 注意:下划线开头的指令是ES内置的
    
    # 删除索引
    DELETE 索引名称
    
    # 关闭索引
    POST 索引名称/_close
    
    # 打开索引
    POST 索引名称/_open

    使用 RESTful 接口

    # 添加索引
    PUT http://ip:端口/索引名称
    
    # 查询索引
    # 查询单个索引信息
    GET http://ip:端口/索引名称
    # 查询多个索引信息
    GET http://ip:端口/索引名称1,索引名称2,...
    # 查询所有索引信息
    GET http://ip:端口/_all
    
    # 删除索引
    DELETE http://ip:端口/索引名称
    
    # 关闭索引
    POST http://ip:端口/索引名称/_close
    
    # 打开索引
    POST http://ip:端口/索引名称/_open

    操作映射

    对已有索引添加映射

    # 添加索引
    PUT person
    
    # 添加映射
    PUT /person/_mapping
    {
    "properties":{  # properties 为固定开头
    "name":{  # 字段名称
    "type":"text"  # type表示字段类型
    },
    "age":{
    "type":"integer"
    }
    }
    }

    同时创建索引和映射

    # 创建索引和映射
    PUT /person1
    {
    "mappings": {  # 注意 mappings 开头
    "properties": {
    "name": {
    "type": "text"
    },
    "age": {
    "type": "integer"
    }
    }
    }
    }
    
    # 查询映射
    GET person1/_mapping

    添加字段

    # 与添加映射的方式相同
    PUT /person1/_mapping
    {
    "properties": {
    "address": {
    "type": "text"
    }
    }
    }

    操作文档

    注意:在仅有索引的情况下也可以添加文档,且在有映射的情况下也可以新增字段

    • 添加文档(指定 id)
    # 添加文档:指定 id 为 2
    POST /person1/_doc/2
    {
    "name":"张三",
    "age":18,
    "address":"北京"
    }
    
    # 查询文档
    GET /person1/_doc/2
    • 添加文档(不指定 id)
    # 添加文档:不指定id
    POST /person1/_doc/
    {
    "name":"张三",
    "age":18,
    "address":"北京"
    }
    
    # 使用返回的随机数id来查询文档
    GET /person1/_doc/随机数id
    • 查询所有文档
    GET person1/_search
    • 删除指定 id 的文档
    DELETE /person1/_doc/2

    bulk 批量操作

    # 测试数据
    POST /person1/_doc/5
    {
    "name":"张三5号",
    "age":18,
    "address":"北京海淀区"
    }
    
    # bulk 批量操作(注意以下指令不可换行)
    # 删除5号
    # 新增8号
    # 更新2号的name为2号
    POST _bulk
    {"delete":{"_index":"person1","_id":"5"}}
    {"create":{"_index":"person1","_id":"8"}}
    {"name":"八号","age":18,"address":"北京"}
    {"update":{"_index":"person1","_id":"2"}}
    {"doc":{"name":"2号"}}
    内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
    标签: