9、Delete API

原文地址:https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-delete.html

elasticsearch版本:6.5

目录地址:https://blog.csdn.net/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

猜你喜欢

转载自blog.csdn.net/mine_1/article/details/85697278