首页/数据/NoSQL 速查/文档 update 与 upsert
本包目录(322 条)
MongoDB99 条
Elasticsearch89 条
ClickHouse56 条时序与列式28 条选型与架构50 条

文档 update 与 upsert

更新接口支持部分字段更新(doc)、脚本更新(script)与 upsert 语义;doc_as_upsert 让文档不存在时按 doc 内容插入,是幂等写入的常用写法。

NoSQL 速查数据更新于 2026-10-12
部分更新{ "doc": { "views": 10 } } 只覆盖给定字段
脚本更新script 可用 painless 修改字段、数组元素
upsert文档缺失时插入 upsert 内容,doc_as_upsert 可复用 doc

示例

示例
POST /my-index/_update/1
{
  "doc": { "views": 10, "updated_at": "2024-07-01" },
  "doc_as_upsert": true
}

POST /my-index/_update/1
{
  "script": {
    "source": "ctx._source.views += params.n",
    "params": { "n": 1 }
  },
  "retry_on_conflict": 3
}
更新是取回 _source、修改、重新索引的过程,高并发下用 retry_on_conflict 缓解版本冲突。

易错点

  • doc 更新会替换同名字段整体值,数组不追加而是覆盖,追加要用 script
  • 被更新文档关闭 _source 后只能用 script 更新,且脚本无法读取原值

数据来源与参考

  • Elasticsearch Guide: Update API
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌