删除一个文档

删除文档的基本模式和之前的基本一样,只不过是需要更换成DELETE方法:

DELETE /website/blog/123

如果文档存在,那么Elasticsearch就会返回一个200 OK的HTTP响应码,返回的结果就会像下面展示的一样。请注意_version的数字已经增加了。

{
  "found" :    true,
  "_index" :   "website",
  "_type" :    "blog",
  "_id" :      "123",
  "_version" : 3
}

如果文档不存在,那么我们就会得到一个404 Not Found的响应码,返回的内容就会是这样的:

{
  "found" :    false,
  "_index" :   "website",
  "_type" :    "blog",
  "_id" :      "123",
  "_version" : 4
}

尽管文档并不存在("found"值为false),但是_version的数值仍然增加了。这个就是内部管理的一部分,它保证了我们在多个节点间的不同操作的顺序都被正确标记了。


正如我在《更新》一章中提到的,删除一个文档也不会立即生效,它只是被标记成已删除。Elasticsearch将会在你之后添加更多索引的时候才会在后台进行删除内容的清理。