Elaticsearch 简单CRUD API

一、API

https://www.elastic.co/guide/en/elasticsearch/reference/current/index.html

  • REST风格API

在这里插入图片描述

  • Java REST Client

https://www.elastic.co/guide/en/elasticsearch/client/java-rest/current/index.html

在这里插入图片描述

1.基本概念

Elasticsearch也是基于Lucene的全文检索库,本质也是存储数据,很多概念与MySQL类似的。如下

  • 对标关系
ElasticsearchMysql
索引库 indices数据库 Database
类型 type库表 Table
文档 Document行 Row
字段 Field列 column
  • 详细说明
概念说明
索引库 indicesindices是index的复数,代表许多的索引,
类型type类型是模拟mysql中的table概念,一个索引库下可以有不同类型的索引,比如商品索引,订单索引,其数据格式不同。不过这会导致索引库混乱,因此未来版本中会移除这个概念
文档(document)存入索引库原始的数据。比如每一条商品信息,就是一个文档
字段(field)文档中的属性
映射配置(mappings)字段的数据类型、属性、是否索引、是否存储等特性
  • 索引集(Indices,index的复数):逻辑上的完整索引
  • 分片(shard):数据拆分后的各个部分
  • 副本(replica):每个分片的复制
  • 要注意的是:Elasticsearch本身就是分布式的,因此即便你只有一个节点,Elasticsearch默认也会对你的数据进行分片和副本操作,当你向集群添加新数据时,数据也会在新加入的节点中进行平衡。

2.创建索引

http://:/<索引>/<类型>/<文档ID> 从ES 7.0.0开始,移除Type(类型)这个概念文本
http://:/<索引>/_doc/<文档ID> // Type 字段那里变为固定值 _doc

2.1 语法(indices 建库)

创建索引的请求格式:

PUT /<index>/_doc/<_id>

POST /<index>/_doc/

PUT /<index>/_create/<_id>

POST /<index>/_create/<_id>
  • 请求方式:PUT

  • 请求路径:/index索引库名

  • 请求参数:json格式:

  {
      "settings": {
          "number_of_shards": 3,
          "number_of_replicas": 3
        }
  }
  • settings:索引库的设置
  • number_of_shards:分片数量
  • number_of_replicas:副本数量

响应结果说明:

_index:文档所在的索引名
_type:文档所在的类型名
_id:文档ID
_version:文档的版本
result:created已经创建
_shards: _shards表示索引操作的复制过程的信息。
total:指示应在其上执行索引操作的分片副本(主分片和副本分片)的数量。
successful:表示索引操作成功的分片副本数。
failed:在副本分片上索引操作失败的情况下包含复制相关错误。

2.2 测试

2.2.1 使用postman 工具测试

在这里插入图片描述

2.2.2 使用Kibana 创建

省去Elasticsearch 服务地址,还有语法提示
在这里插入图片描述

2.3 映射配置(建表)

什么是映射?
​ 映射是定义文档的过程,文档包含哪些字段,这些字段是否保存,是否索引,是否分词等
只有配置清楚,Elasticsearch才会帮我们进行索引库的创建(不一定)

2.3.1 语法
  • 类型名称:就是前面将的type的概念,类似于数据库中的不同表
    字段名:任意填写 ,可以指定许多属性,例如:
  • type:类型,可以是text、long、short、date、integer、object等从ES 7.0.0 开始,Type就被移除
  • index:是否索引,默认为true
  • store:是否存储,默认为false
  • analyzer:分词器,这里的ik_max_wordik_smart即使用ik分词器
PUT /goods
{
  "settings": {
    "number_of_replicas": 1, 
    "number_of_shards": 2
  }
  , "mappings": {
    "properties": {
      "title":{
        "type": "text", 
        "analyzer": "ik_max_word"
      },
      "images":{
        "type": "keyword",
        "index": false
      },
      "price":{
        "type": "float",
        "index": false
      }
    }
  }
}

在这里插入图片描述

问题,illegal_argument_exception

原因从ES 7.0.0 开始,Type就被移除

在这里插入图片描述

2.4 CRUD

2.4.1 新增一条数据
  • 指定文档id

路径格式为 http://<ip>:<port>/<索引>/_doc/<文档ID>,下面我们插入了一条 ID 为 1 的数据

PUT  /goods/_doc/1
{
  "title":"华为手机",
  "images":"https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1588932565199&di=f43a3fa38dfdceddf87ea0ccd479c5d2&imgtype=0&src=http%3A%2F%2F02.imgmini.eastday.com%2Fmobile%2F20170814%2F4168406f90d09a5495c5c85dbde700bd.jpeg",
  "price":1499.99
}

在这里插入图片描述

  • 自动生成id

格式: POST /goods/_doc/

POST  /goods/_doc/
{
  "title":"小米手机",
  "images":"https://gss0.baidu.com/7LsWdDW5_xN3otqbppnN2DJv/space/pic/item/38dbb6fd5266d016629ec873982bd40734fa35e1.jpg",
  "price":1699.99
}

在这里插入图片描述

2.4.2 查询
  • 简单查询 GET /indices索引/_doc/_id值

  • 条件查询 POST /indices索引/_search

  • 聚合查询

GET  /goods/_doc/1

在这里插入图片描述查询所有
在这里插入图片描述
在这里插入图片描述查询所有,排序、限制(从哪里返回、返回多少条)在这里插入图片描述

关键字 查询
在这里插入图片描述

2.4.3 更新

格式:/indices索引/_update/_id值

POST  /goods/_update/zEM283EBE4B9a-qryeU9
{
  "doc": {
    "title":"小米10青春版"
  }
}

在这里插入图片描述在这里插入图片描述

2.4.4 删除
  • 文档删除 DELETE /indices索引/_doc/_id值
  • 索引删除 DELETE /indices索引
    在这里插入图片描述
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值