您的位置:

ES 删除数据详解

一、删除单个文档

删除单个文档是ES中最基本的操作,只需向ES服务器发送请求,指定要删除的文档ID和索引名即可删除。

1.1 代码示例

DELETE /my_index/_doc/1 

1.2 参数说明

  • DELETE:HTTP协议中的DELETE请求方法,用于删除资源。
  • /my_index/_doc/1:要删除的文档URI,其中my_index是索引名,_doc是类型名,1是文档ID。

1.3 返回值说明

如果删除成功,ES服务器会返回一个JSON格式的响应体,其格式如下:

{
  "_index" : "my_index",
  "_type" : "_doc",
  "_id" : "1",
  "_version" : 1,
  "result" : "deleted",
  "_shards" : {
    "total" : 2,
    "successful" : 1,
    "failed" : 0
  },
  "_seq_no" : 0,
  "_primary_term" : 1
}

其中:

  • _index和_type:索引名和类型名,与请求URI中的相对应。
  • _id:要删除的文档ID,与请求URI中的相对应。
  • _version:文档的版本号。
  • result:删除操作的结果。
  • _shards:指示删除操作在分片集群中的执行情况。

二、删除多个文档

删除多个文档同样基于文档ID,只不过在删除请求中指定多个ID。

2.1 代码示例

POST /my_index/_delete_by_query
{
  "query": {
    "terms" : {
        "_id" : ["1", "2"]
    }
  }
}

2.2 参数说明

  • POST:HTTP协议中的POST请求方法,用于提交数据。
  • /my_index/_delete_by_query:执行删除操作的URI,其中my_index是索引名。
  • "query":删除操作所依据的查询条件。
  • "terms":查询条件的类型,表示文档ID的一组值。
  • "_id":需要被删除的文档ID,多个值用数组表示。

2.3 返回值说明

如果删除成功,ES服务器会返回一个JSON格式的响应体,其中包含有关删除成功的信息。

三、删除整个索引

删除整个索引需要拥有删除索引的权限,即需要使用高级权限,包括所有权限和manage_index权限。

3.1 代码示例

DELETE /my_index

3.2 参数说明

  • DELETE:HTTP协议中的DELETE请求方法,用于删除资源。
  • /my_index:要删除的索引名。

3.3 返回值说明

如果删除成功,ES服务器会返回一个JSON格式的响应体,其中包含有关删除成功的信息。

四、删除全部数据

删除全部数据需要以批量方式执行删除操作。这种方式适用于需要清空索引中所有文档的情况,比如重新建立索引。

4.1 代码示例

POST /my_index/_delete_by_query?conflicts=proceed
{
  "query": {
    "match_all": {}
  }
}

4.2 参数说明

  • POST:HTTP协议中的POST请求方法,用于提交数据。
  • /my_index/_delete_by_query:执行删除操作的URI,其中my_index是索引名。
  • "conflicts=proceed":可选参数,指定在删除操作中发生冲突时的处理方式。
  • "query":删除操作所依据的查询条件。
  • "match_all":查询条件的类型,表示匹配所有文档。

4.3 返回值说明

如果删除成功,ES服务器会返回一个JSON格式的响应体,其中包含有关删除成功的信息。