elasticsearch 文档更新操作:update和update_by_query
API:
(elasticsearch版本7.3)
1 2 | POST /<index>/_update/<_id> POST /<index>/_update_by_query |
1. POST /<index>/_update/<_id>
- 支持脚本,可以更新、删除或跳过修改文档。
- 更新文档部分内容,传递部分文档,将其合并到现有文档中。
1 2 3 4 5 6 7 8 9 10 11 | #测试--post/update 脚本修改文档 POST /king_test_person/_update/223 { "script" : { "source" : "ctx._source.birthday = params.birthday" , "lang" : "painless" , "params" : { "birthday" : "2023-10-01" } } } |
1 2 3 4 5 6 7 | #测试--post/update 部分修改文档 POST /king_test_person/_update/223 { "doc" : { "name" : "王五6" } } |
2. POST /<index>/_update_by_query
- 批量修改匹配到查询条件的文档
- 修改mapping结构
2.1 没有查询条件,全部修改
1 2 3 4 5 6 7 8 9 | #测试--_update_by_query POST /king_test_person/_update_by_query { "script" : { "source" : "ctx._source.sex='女'" , "lang" : "painless" } } } |
总共8条数据,更新8条数据
2.2 有查询条件,修改匹配的文档
只修改name=王五4 的数据。
1 2 3 4 5 6 7 8 9 10 11 12 13 | #测试--_update_by_query POST /king_test_person/_update_by_query { "script" : { "source" : "ctx._source.sex='男'" , "lang" : "painless" }, "query" :{ "term" : { "name" : "王五4" } } } |
3. 修改mapping
3.1 按查询条件修改
给id=223的文档,添加地址
1 2 3 4 5 6 7 8 9 10 11 12 13 | #测试--_update_by_query 修改mapping结构 POST /king_test_person/_update_by_query { "script" : { "source" : "ctx._source['address'] = \"四川省成都市\"" , "lang" : "painless" }, "query" :{ "term" : { "_id" : 223 } } } |
查询可以看到,只有id=223的文档有属性address
3.2 全部修改
不加查询限制,会更新所有文档
1 2 3 4 5 6 7 8 | #测试--_update_by_query 修改mapping结构 POST /king_test_person/_update_by_query { "script" : { "source" : "ctx._source['address'] = \"四川省成都市\"" , "lang" : "painless" } } |
分类:
elasticsearch
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端