ElasticSearch 6.3版本 Document APIs之Delete API

delete API
delete API允许根据其id从特定索引中删除类型化的JSON文档。e.g.

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"
}

版本控制
索引的每个文档都是版本化的。删除文档时,version可以指定以确保我们尝试删除的相关文档实际上已被删除并且在此期间没有更改。对文档执行的每个写入操作(包括删除)都会导致其版本递增。被删除文档的版本号在删除后短时间内仍可使用以便控制并发操作。已删除文档的版本号保持可用的时间长度由index.gc_deletes索引设置决定,默认为60s。

路由
使用控制路由的能力进行索引时,为了删除文档,还应提供路由值。e.g.

DELETE /twitter/_doc/1?routing=kimchy

以上操作将删除id为1的推文,但会根据用户进行路由。注:若路由错误则不会删除文档。

当_routing映射设置为required且未指定路由值时,delete API将抛出a RoutingMissingException并拒绝该请求。

自动创建索引
若使用外部版本控制变体,则删除操作会自动创建索引(如果之前尚未创建索引),并自动为特定类型创建动态类型映射(如果它之前尚未创建)

超时
执行删除操作时,分配用于执行删除操作的主分片可能不可用。造成这种情况的一些原因可能是主分片当前正在从商店回复或正在进行重定位。默认情况下,删除操作将在主分片上等待最多1分钟,然后失败并相应错误。该timeout参数可用于显示指定等待的时间。e.g.设置为等待5分钟:

DELETE /twitter/_doc/1?timeout = 5m


猜你喜欢

转载自blog.csdn.net/qingmou_csdn/article/details/80947417