原文地址:https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-delete.html
elasticsearch版本:6.5
目录地址:https://blog.youkuaiyun.com/mine_1/article/details/85623429
delete API可以根据给定的ID删除指定的文档。下面的例子是删除Twitter索引下_doc类型下ID为1的文档:
DELETE /twitter/_doc/1
得到的响应为:
{
"_shards" : {
"total" : 2,
"failed" : 0,
"successful" : 2
},
"_index" : "twitter",
"_type" : "_doc",
"_id" : "1",
"_version" : 2,
"_primary_term": 1,
"_seq_no": 5,
"result": "deleted"
}
(1)Versioning
索引文档都有版本控制。删除文档时,可以指定版本,以确保我们尝试删除的相关文档真正被删除,并且在此期间不能被更改。对文档执行的每个写入操作(包括删除)都会导致其版本增加。删除后,已删除文档的版本号在短时间内保持可用,以允许控制并发操作。已删除文档的版本保持可用的时间长度由index.gc_deletes设置确定,默认为60秒。
(2)Routing
当索引有路由时,为了删除文档,还应该提供路由值。例如:
DELETE /twitter/_doc/1?routing=kimchy
这个请求将删除id为1的文档,但是routed将根据用户的指定。注意:在没有正确routing的情况下进行删除操作将导致文档无法正确删除。
当_routing设置为required时,如果没有设置routing,delete API将会抛出RountingMissingException错误并且删除失败。
(3)Automatic index creation
如果使用了外部版本控制变量,则删除操作会自动创建一个以前未创建过的索引,如果以前未创建过特定类型,则还会自动为其创建动态类型映射。
(4)Distributed
删除操作被hash到一个特定的分片中,然后被重定向到该id组中的主shard中,并复制(如果需要)到该id组中的shard复本中。
(5)Wait For Active Shards
当发出删除请求时,可以设置wait_for_active_shards参数,来设置再执行删除操作前请求最小数量的可用分片。
(6)Refresh
设置此请求所做的更改对搜索可见的时间。
(7)Timeout
执行删除操作时,分配给执行删除操作的主碎片可能不可用。可能的原因有主碎片当前正在从存储恢复或正在重新定位。默认情况下,删除操作将在主碎片变为可用状态前等待1分钟,然后失败并返回错误响应。timeout参数可用于显式指定等待的时间。下面是将其设置为5分钟的示例:
DELETE /twitter/_doc/1?timeout=5m