删除

 

Elasticsearch 提供多维度数据删除能力,支持从单文档到全索引的多种操作,具体方法如下:

一、删除操作分类‌
1. 删除单个文档(基于ID)‌

通过指定文档 _id 精准删除单条数据,适用于已知文档唯一标识的场景‌:

json
Copy Code
DELETE /index_name/_doc/document_id

2. 按条件批量删除文档‌

使用 _delete_by_query API 根据查询条件批量删除数据‌:

json
Copy Code
POST /index_name/_delete_by_query
{
  "query": { 
    "term": { "field_name": "value_to_delete" }  // 匹配条件删除
  }
}

3. 清空索引数据(保留结构)‌

保留索引映射但删除所有文档,适用于重置数据场景‌:

json
Copy Code
POST /index_name/_delete_by_query
{
  "query": { "match_all": {} }  // 匹配全部文档
}

4. 删除整个索引(结构+数据)‌

彻底删除索引及其数据,类似数据库 DROP TABLE 操作‌:

json
Copy Code
DELETE /index_name

二、操作对比与适用场景‌
操作类型‌	‌命令/API‌	‌数据影响‌	‌典型场景‌	‌引用来源‌
单文档删除	DELETE /index/_doc/id	删除指定ID的文档	精准清理无效数据	‌
条件删除	_delete_by_query	批量删除匹配条件的文档	清理过期日志、错误数据	‌
清空索引数据	_delete_by_query + match_all	删除全部文档,保留映射	数据重置或测试环境清理	‌
删除索引	DELETE /index	删除索引及其所有数据	废弃索引清理或存储优化	‌
三、关键注意事项‌

权限控制‌
禁止开放 DELETE /* 或 DELETE _all 权限,避免误删全库‌

yaml
Copy Code
# elasticsearch.yml 配置
action.destructive_requires_name: true


数据备份‌
执行批量删除前建议快照备份,防止误操作‌

性能影响‌
大范围 _delete_by_query 操作可能引发性能波动,建议分片执行或低峰期操作‌

版本兼容性‌
_delete_by_query 在 7.x+ 版本默认集成,旧版本需安装 delete-by-query 插件‌

四、操作验证示例‌

删除完成后,通过以下命令确认结果:

json
Copy Code
GET /index_name/_count          // 验证文档数量‌:ml-citation{ref="3,7" data="citationList"}
GET /index_name/_mapping        // 检查索引结构是否保留‌:ml-citation{ref="6,7" data="citationList"}

  

posted on 2025-04-06 20:28  是水饺不是水饺  阅读(259)  评论(0)    收藏  举报

导航