# 删除与版本控制

URL: https://caijiao.org/elasticsearch/02.basic/08.doc-delete-version
Source: docs/elasticsearch/02.basic/08.doc-delete-version.md
Description: 本章介绍 Elasticsearch 中删除文档的操作方法及版本控制机制，帮助理解数据安全删除与并发冲突处理。

在 Elasticsearch 中，删除文档和版本控制是保障数据一致性与系统稳定的重要机制。掌握这些操作，有助于高效管理数据生命周期。

## 1. 删除文档

通过文档 ID 删除指定文档：

```http
DELETE /my-index/_doc/1
````

该操作会将文档标记为删除，数据最终由后台合并过程清理。

## 2. 按查询条件批量删除

使用 `_delete_by_query` API 删除符合查询条件的文档：

```http
POST /my-index/_delete_by_query
{
  "query": {
    "match": {
      "status": "obsolete"
    }
  }
}
```

## 3. 版本控制机制

Elasticsearch 使用版本号来控制文档的并发写入，避免写入冲突。

* 每次文档更新，版本号自动递增
* 可以通过版本号参数保证只更新指定版本，避免脏写入

示例：带版本号的更新请求

```http
POST /my-index/_update/1?if_seq_no=10&if_primary_term=1
{
  "doc": { "views": 300 }
}
```

## 4. 注意事项

* 删除文档是异步过程，物理删除延后执行
* 版本控制对于高并发写入环境非常重要，能防止数据丢失和冲突
* 使用批量删除需谨慎，避免误删大量数据

---

合理利用删除和版本控制功能，能够提升 Elasticsearch 的数据管理能力和系统稳定性。
