delete.asciidoc 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138
  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. "_shards" : {
  16. "total" : 10,
  17. "failed" : 0,
  18. "successful" : 10
  19. },
  20. "found" : true,
  21. "_index" : "twitter",
  22. "_type" : "tweet",
  23. "_id" : "1",
  24. "_version" : 2
  25. }
  26. --------------------------------------------------
  27. [float]
  28. [[delete-versioning]]
  29. === Versioning
  30. Each document indexed is versioned. When deleting a document, the
  31. `version` can be specified to make sure the relevant document we are
  32. trying to delete is actually being deleted and it has not changed in the
  33. meantime. Every write operation executed on a document, deletes included,
  34. causes its version to be incremented.
  35. [float]
  36. [[delete-routing]]
  37. === Routing
  38. When indexing using the ability to control the routing, in order to
  39. delete a document, the routing value should also be provided. For
  40. example:
  41. [source,js]
  42. --------------------------------------------------
  43. $ curl -XDELETE 'http://localhost:9200/twitter/tweet/1?routing=kimchy'
  44. --------------------------------------------------
  45. The above will delete a tweet with id 1, but will be routed based on the
  46. user. Note, issuing a delete without the correct routing, will cause the
  47. document to not be deleted.
  48. Many times, the routing value is not known when deleting a document. For
  49. those cases, when specifying the `_routing` mapping as `required`, and
  50. no routing value is specified, the delete will be broadcasted
  51. automatically to all shards.
  52. [float]
  53. [[delete-parent]]
  54. === Parent
  55. The `parent` parameter can be set, which will basically be the same as
  56. setting the routing parameter.
  57. Note that deleting a parent document does not automatically delete its
  58. children. One way of deleting all child documents given a parent's id is
  59. to perform a <<docs-delete-by-query,delete by query>> on the child
  60. index with the automatically generated (and indexed)
  61. field _parent, which is in the format parent_type#parent_id.
  62. [float]
  63. [[delete-index-creation]]
  64. === Automatic index creation
  65. The delete operation automatically creates an index if it has not been
  66. created before (check out the <<indices-create-index,create index API>>
  67. for manually creating an index), and also automatically creates a
  68. dynamic type mapping for the specific type if it has not been created
  69. before (check out the <<indices-put-mapping,put mapping>>
  70. API for manually creating type mapping).
  71. [float]
  72. [[delete-distributed]]
  73. === Distributed
  74. The delete operation gets hashed into a specific shard id. It then gets
  75. redirected into the primary shard within that id group, and replicated
  76. (if needed) to shard replicas within that id group.
  77. [float]
  78. [[delete-consistency]]
  79. === Write Consistency
  80. Control if the operation will be allowed to execute based on the number
  81. of active shards within that partition (replication group). The values
  82. allowed are `one`, `quorum`, and `all`. The parameter to set it is
  83. `consistency`, and it defaults to the node level setting of
  84. `action.write_consistency` which in turn defaults to `quorum`.
  85. For example, in a N shards with 2 replicas index, there will have to be
  86. at least 2 active shards within the relevant partition (`quorum`) for
  87. the operation to succeed. In a N shards with 1 replica scenario, there
  88. will need to be a single shard active (in this case, `one` and `quorum`
  89. is the same).
  90. [float]
  91. [[delete-refresh]]
  92. === Refresh
  93. The `refresh` parameter can be set to `true` in order to refresh the relevant
  94. primary and replica shards after the delete operation has occurred and make it
  95. searchable. Setting it to `true` should be done after careful thought and
  96. verification that this does not cause a heavy load on the system (and slows
  97. down indexing).
  98. [float]
  99. [[delete-timeout]]
  100. === Timeout
  101. The primary shard assigned to perform the delete operation might not be
  102. available when the delete operation is executed. Some reasons for this
  103. might be that the primary shard is currently recovering from a gateway
  104. or undergoing relocation. By default, the delete operation will wait on
  105. the primary shard to become available for up to 1 minute before failing
  106. and responding with an error. The `timeout` parameter can be used to
  107. explicitly specify how long it waits. Here is an example of setting it
  108. to 5 minutes:
  109. [source,js]
  110. --------------------------------------------------
  111. $ curl -XDELETE 'http://localhost:9200/twitter/tweet/1?timeout=5m'
  112. --------------------------------------------------