Elasticsearch 入门教程之基本操作新增、更新、删除(二)

目录

1、es命令访问方式和风格

1.1 es访问方式

1.2 Rest风格说明

2、新增操作

2.1 POST指定ID新增

2.2 POST不指定ID新增

2.3 PUT新增

3.更新

3.1 POST带_update

3.2 POST不带_update

3.3 PUT

4.删除

5.ES的批量操作——bulk

5.1 批量新增

5.1.1 index批量新增

5.1.2 create批量新增

5.1.2 create和index批量新增区别

5.2 批量更新

5.3 批量删除


1、es命令访问方式和风格

1.1 es访问方式

实际开发中,主要有三种方式可以作为es服务的客户端:

  • 使用elasticsearch-head插件
  • 使用elasticsearch提供的Restful接口直接访问
  • 使用elasticsearch提供的API进行访问

1.2 Rest风格说明

一种软件架构风格,而不是标准。更易于实现缓存等机制

methodurl地址描述
PUTlocalhost:9200/索引名称/类型名称/文档id创建文档(指定文档id)
POSTlocalhost:9200/索引名称/类型名称创建文档(随机文档id)
POSTlocalhost:9200/索引名称/类型名称/文档id/_update修改文档
DELETElocalhost:9200/索引名称/类型名称/文档id删除文档
GETlocalhost:9200/索引名称/类型名称/文档id通过文档id查询文档
POSTlocalhost:9200/索引名称/类型名称/_search查询所有的数据

2、新增操作

保存一个数据,保存在哪个索引的哪个类型下(哪张数据库哪张表下),保存时用唯一标识指定

2.1 POST指定ID新增

POST /demo/person/1
{
  "name":"王璐",
  "age":"35",
  "sex":"男"
}

结论:指定ID新增,如果ID一样,数据不存在,是新增;数据存在,是更新;而且_seq_no和_version 每次调用值都会发送改变

2.2 POST不指定ID新增

POST /demo/person/
{
  "name":"王璐",
  "age":"35",
  "sex":"男"
}

 结论:不指定ID,每次点击都会自动生成ID值,而且都是新增

2.3 PUT新增

PUT /demo/person/3
{
  "name":"张顺利",
  "age":"43",
  "sex":"女"
}

结论:PUT可以新增也可以修改。PUT必须指定id;由于PUT需要指定id,我们一般用来做修改操作,不指定id会报错

总结:

  • POST新增。如果不指定id,会自动生成id。指定id就会修改这个数据,并新增版本号;

        可以不指定id,不指定id时永远为创建
        指定不存在的id为创建
        指定存在的id为更新,而版本号会根据内容变没变而觉得版本号递增与

  • PUT可以新增也可以修改。PUT必须指定id;由于PUT需要指定id,我们一般用来做修改操作,不指定id会报错。

        必须指定id
        版本号总会增加

  • 怎么记:put和java里map.put一样必须指定key-value。而post相当于mysql insert
返回数据:
带有下划线开头的,称为元数据,反映了当前的基本信息。
{
  "_index" : "demo", 表明该数据在哪个数据库下;
  "_type" : "person",表明该数据在哪个类型下;
  "_id" : "3", 表明被保存数据的id;
  "_version" : 1, 被保存数据的版本
  "result" : "create",数据的状态创建还是更新
  "_shards" : {
    "total" : 2,
    "successful" : 1,
    "failed" : 0
  },
  "_seq_no" : 1, 而序列号"_seq_no"则可以看做是索引的信息 在第一次为索引插入数据时为0,每对索引内数据操作成功一次sqlNO加1, 并且文档会记录是第几次操作使它成为现在的情况的
  "_primary_term" : 1
}

3.更新

3.1 POST带_update

#其他值不传,不会修改其他值
POST /demo/person/1/_update
{
  "doc":{
    "name" : "王璐",
    "age" : "49"
  }
}

3.2 POST不带_update

#方式一
POST /demo/person/1
{
    "name" : "王璐",
    "age" : "40"
}

#方式二
POST /demo/person/1
{
    "doc":{
      "name" : "王璐",
      "age" : "35"
    }
}

3.3 PUT

PUT demo/person/1
{
  "doc":{
    "name":"王璐",
    "age":"49"
  }
}

4.删除

#删除文档
DELETE /demo/person/1
#删除索引
DELETE /demo

注:elasticsearch并没有提供删除类型的操作,只提供了删除索引和文档的操作。

5.ES的批量操作——bulk

语法格式:

action:index/create/update/delete

metadata:_index,_type,_id

request body:_source (删除操作不需要加request body)

                   { action: { metadata }}

                   { request body        }

5.1 批量新增

5.1.1 index批量新增

POST _bulk
{"index":{"_index":"mysql","_type":"student","_id":"1"}}
{"name":"李四","age":23}
{"index":{"_index":"mysql","_type":"student","_id":"2"}}
{"name":"李五","age":33}

5.1.2 create批量新增

POST _bulk
{"create":{"_index":"mysql","_type":"student","_id":"3"}}
{"name":"王一","age":34}
{"create":{"_index":"mysql","_type":"student","_id":"4"}}
{"name":"鲁尔","age":32}

5.1.2 create和index批量新增区别

POST _bulk
{"index":{"_index":"mysql","_type":"student","_id":"1"}}
{"name":"李四","age":23}
{"create":{"_index":"mysql","_type":"student","_id":"1"}}
{"name":"王一","age":34}

结论 

create 创建操作,如果需要创建的文档已经存在,那么创建失败
index 创建或替换操作,如果要创建的文档不存在则执行创建操作,如果已经存在则执行替换操作

5.2 批量更新

POST _bulk
{"update":{"_index":"mysql","_type":"student","_id":"1"}}
{"doc":{"name":"王二","age":34}}
{"update":{"_index":"mysql","_type":"student","_id":"10"}}
{"doc":{"name":"李四","age":22}}

通过 _bulk 批量更新索引中的文档数据,其中一条更新成功,一条因为无法获取对应ID的文档,更新失败 

5.3 批量删除

POST _bulk
{"delete":{"_index":"mysql","_type":"student","_id":1}}

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值