elasticsearch笔记-005-文档API-CRUD-单文档删除操作

[toc]

1. 单文档Delete API

1. 使用id删除document

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

2. document 指定版本的删除

索引的每个document 都有版本。在删除文档时,可以指定版本,确保删除的文档实际上已经被删除,且在此期间没有发生更改; 对文档执行的每个写操作(包括删除)都会导致其版本增加;删除后的文档的版本号在短时间内仍然可用,以便控制并发操作, 被删除文档的版本保持可用的时间长度由 index.gc_deletes这个设置(setting)决定: 默认是 60 seconds;

3. routing的索引的删除

如果建索引时, 使用了 routing, 那么 删除索引时, 也需要指定 routing; DELETE /twitter/_doc/1?routing=kimchy, 没有正确路由的情况下发出删除将导致文档不被删除。当按需要设置_routing映射并且没有指定路由值时,delete API将抛出一个RoutingMissingException并拒绝请求

4. 删除时检查活跃分片数量

发出删除操作时, 可以设置wait_for_active_shards参数,要求在开始处理删除请求之前,检查活动的切分副本的最小数量;

5. 删除时的 timeout

在执行删除操作时,分配给执行删除操作的主shard可能不可用! 原因可能是主shard当前正在从存储中恢复或正在进行重新定位; 默认情况下,delete操作将等主shard可用的时长为1分钟,然后失败并响应一个错误。这个 timeout参数可以在删除时指定: DELETE /twitter/_doc/1?timeout=5m

2. TODO: Delete By Query API

你可能感兴趣的:(elasticsearch)