月光代碼園

記錄、分享、交流

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

Elasticsearch学习笔记#3 更新/ID自动生成/更新时使用脚本函数script/删除数据/批处理命令_bulk

延续上篇

1.使用PUT更新数据

先执行创建数据命令

1
2
3
4
PUT /customer/_doc/1?pretty
{
  "name": "John Doe"
}

 再使用同样的命令,其中要把name的值修改一下,再执行

1
2
3
4
PUT /customer/_doc/1?pretty
{
  "name": "Jane Doe"
}

 结果

1
2
3
4
5
6
7
8
9
10
11
12
13
14
{
  "_index" : "customer",
  "_type" : "_doc",
  "_id" : "1",
  "_version" : 2,
  "result" : "updated",
  "_shards" : {
    "total" : 2,
    "successful" : 1,
    "failed" : 0
  },
  "_seq_no" : 1,
  "_primary_term" : 1
}

 此时可以看见result的值为updated,新添加的数据将覆盖id=1的数据 

验证一下

1
GET /customer/_doc/1

 结果

1
2
3
4
5
6
7
8
9
10
11
12
{
  "_index" : "customer",
  "_type" : "_doc",
  "_id" : "1",
  "_version" : 2,
  "_seq_no" : 1,
  "_primary_term" : 1,
  "found" : true,
  "_source" : {
    "name" : "Jane Doe"
  }
}

2.新增数据时,不指定ID的情况

1
2
3
4
POST /customer/_doc?pretty
{
  "name": "Jane Doe"
}

 没有指定具体ID,结果

1
2
3
4
5
6
7
8
9
10
11
12
13
14
{
  "_index" : "customer",
  "_type" : "_doc",
  "_id" : "mH8AOWwBo4iimwza2_ez",
  "_version" : 1,
  "result" : "created",
  "_shards" : {
    "total" : 2,
    "successful" : 1,
    "failed" : 0
  },
  "_seq_no" : 2,
  "_primary_term" : 1
}

  新建成功,系统会随机生成一个id

3.使用POST更新数据

1
2
3
4
POST /customer/_update/1?pretty
{
  "doc": { "name": "Jane Doe" }
}

 

1
2
3
4
POST /customer/_update/1?pretty
{
  "doc": { "name": "Jane Doe", "age": 20 }
}

结果

1
2
3
4
5
6
7
8
9
10
11
12
13
14
{
  "_index" : "customer",
  "_type" : "_doc",
  "_id" : "1",
  "_version" : 4,
  "result" : "updated",
  "_shards" : {
    "total" : 2,
    "successful" : 1,
    "failed" : 0
  },
  "_seq_no" : 4,
  "_primary_term" : 1
}

4.在更新数据时使用简单的脚本

1
2
3
4
POST /customer/_update/1?pretty
{
  "script" : "ctx._source.age += 5"
}

age为第3个例子添加的字段,ctx._source和当前编辑的文档相关联

执行后查询该文档,结果为:

1
2
3
4
5
6
7
8
9
10
11
12
13
{
  "_index" : "customer",
  "_type" : "_doc",
  "_id" : "1",
  "_version" : 6,
  "_seq_no" : 6,
  "_primary_term" : 1,
  "found" : true,
  "_source" : {
    "name" : "Jane Doe",
    "age" : 25
  }
}

  age的值增加了5

5.删除数据

1
DELETE /customer/_doc/1?pretty

6.批处理命令

1
2
3
4
5
POST /customer/_bulk?pretty
{"index":{"_id":"1"}}
{"name": "John Doe" }
{"index":{"_id":"2"}}
{"name": "Jane Doe" }

 该命令先更新ID=1  name=John Doe的数据,再创建ID=2 name=Jane Doe的数据

1
2
3
4
POST /customer/_bulk?pretty
{"update":{"_id":"1"}}
{"doc": { "name": "John Doe becomes Jane Doe" } }
{"delete":{"_id":"2"}}

 该命令先更新id=1的数据,数据内容为name=John Doe becomes Jane Doe;再删除id=2的数据

posted on   bangdikka  阅读(620)  评论(0编辑  收藏  举报

编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端
点击右上角即可分享
微信分享提示