You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Elasticsearch中保留文档最近2个版本并查询历史版本

在Elasticsearch中获取文档的历史版本

当然可以在同一个索引中获取文档的上一版本,不过需要先配置索引的版本保留策略,再通过指定版本号的API查询。

步骤1:配置索引保留历史版本

Elasticsearch通过**软删除(soft deletes)**机制保留文档的历史版本,你需要确保索引配置了足够的保留操作数,以保存最近2个版本。

如果是新建索引,创建时可以指定以下设置:

PUT /products
{
  "settings": {
    "index.soft_deletes.enabled": true,  // 默认已开启,显式声明更稳妥
    "index.soft_deletes.retention.operations": 2  // 保留最近2次操作的版本
  },
  "mappings": {
    "properties": {
      "name": { "type": "text" },
      "price": { "type": "integer" }
    }
  }
}

如果索引已存在,可通过更新设置API调整:

PUT /products/_settings
{
  "index.soft_deletes.retention.operations": 2
}

步骤2:获取指定版本的文档

每次创建或更新文档时,Elasticsearch会自动递增文档的_version字段:

  • 首次创建product123时,文档的_version为1(对应价格10)
  • 更新后,_version变为2(对应价格12)

你可以通过_get API指定version参数,直接获取对应版本的文档:

GET /products/_doc/product123?version=1

执行这个请求后,就能得到价格为10的上一版本文档内容。

注意事项

  • 如果索引未开启软删除,或者保留的操作数小于需要的版本数,历史版本会被Elasticsearch自动清理,无法查询。
  • 版本号是严格递增的,每次更新(包括覆盖式PUT)都会让版本号+1,所以要确保你知道目标版本的具体数值。

内容的提问来源于stack exchange,提问作者Sneha Mule

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 20:05:17