delete.asciidoc 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  1. [[docs-delete]]
  2. == Delete API
  3. The delete API allows to delete a typed JSON document from a specific
  4. index based on its id. The following example deletes the JSON document
  5. from an index called twitter, under a type called tweet, with id valued
  6. 1:
  7. [source,js]
  8. --------------------------------------------------
  9. $ curl -XDELETE 'http://localhost:9200/twitter/tweet/1'
  10. --------------------------------------------------
  11. The result of the above delete operation is:
  12. [source,js]
  13. --------------------------------------------------
  14. {
  15. "ok" : true,
  16. "_index" : "twitter",
  17. "_type" : "tweet",
  18. "_id" : "1",
  19. "found" : true
  20. }
  21. --------------------------------------------------
  22. [float]
  23. [[delete-versioning]]
  24. === Versioning
  25. Each document indexed is versioned. When deleting a document, the
  26. `version` can be specified to make sure the relevant document we are
  27. trying to delete is actually being deleted and it has not changed in the
  28. meantime.
  29. [float]
  30. [[delete-routing]]
  31. === Routing
  32. When indexing using the ability to control the routing, in order to
  33. delete a document, the routing value should also be provided. For
  34. example:
  35. [source,js]
  36. --------------------------------------------------
  37. $ curl -XDELETE 'http://localhost:9200/twitter/tweet/1?routing=kimchy'
  38. --------------------------------------------------
  39. The above will delete a tweet with id 1, but will be routed based on the
  40. user. Note, issuing a delete without the correct routing, will cause the
  41. document to not be deleted.
  42. Many times, the routing value is not known when deleting a document. For
  43. those cases, when specifying the `_routing` mapping as `required`, and
  44. no routing value is specified, the delete will be broadcasted
  45. automatically to all shards.
  46. [float]
  47. [[delete-parent]]
  48. === Parent
  49. The `parent` parameter can be set, which will basically be the same as
  50. setting the routing parameter.
  51. Note that deleting a parent document does not automatically delete its
  52. children. One way of deleting all child documents given a parent's id is
  53. to perform a <<docs-delete-by-query,delete by query>> on the child
  54. index with the automatically generated (and indexed)
  55. field _parent, which is in the format parent_type#parent_id.
  56. [float]
  57. [[delete-index-creation]]
  58. === Automatic index creation
  59. The delete operation automatically creates an index if it has not been
  60. created before (check out the <<indices-create-index,create index API>>
  61. for manually creating an index), and also automatically creates a
  62. dynamic type mapping for the specific type if it has not been created
  63. before (check out the <<indices-put-mapping,put mapping>>
  64. API for manually creating type mapping).
  65. [float]
  66. [[delete-distributed]]
  67. === Distributed
  68. The delete operation gets hashed into a specific shard id. It then gets
  69. redirected into the primary shard within that id group, and replicated
  70. (if needed) to shard replicas within that id group.
  71. [float]
  72. [[delete-replication]]
  73. === Replication Type
  74. The replication of the operation can be done in an asynchronous manner
  75. to the replicas (the operation will return once it has be executed on
  76. the primary shard). The `replication` parameter can be set to `async`
  77. (defaults to `sync`) in order to enable it.
  78. [float]
  79. [[delete-consistency]]
  80. === Write Consistency
  81. Control if the operation will be allowed to execute based on the number
  82. of active shards within that partition (replication group). The values
  83. allowed are `one`, `quorum`, and `all`. The parameter to set it is
  84. `consistency`, and it defaults to the node level setting of
  85. `action.write_consistency` which in turn defaults to `quorum`.
  86. For example, in a N shards with 2 replicas index, there will have to be
  87. at least 2 active shards within the relevant partition (`quorum`) for
  88. the operation to succeed. In a N shards with 1 replica scenario, there
  89. will need to be a single shard active (in this case, `one` and `quorum`
  90. is the same).
  91. [float]
  92. [[delete-refresh]]
  93. === Refresh
  94. The `refresh` parameter can be set to `true` in order to refresh the
  95. relevant shard after the delete operation has occurred and make it
  96. searchable. Setting it to `true` should be done after careful thought
  97. and verification that this does not cause a heavy load on the system
  98. (and slows down indexing).