diff --git a/docs/java-api/docs.asciidoc b/docs/java-api/docs.asciidoc index 07fe167945e..9ace406ee42 100644 --- a/docs/java-api/docs.asciidoc +++ b/docs/java-api/docs.asciidoc @@ -12,7 +12,6 @@ This section describes the following CRUD APIs: .Multi-document APIs * <> * <> -* <> NOTE: All CRUD APIs are single-index APIs. The `index` parameter accepts a single index name, or an `alias` which points to a single index. @@ -28,5 +27,3 @@ include::docs/update.asciidoc[] include::docs/multi-get.asciidoc[] include::docs/bulk.asciidoc[] - -include::docs/delete-by-query.asciidoc[] diff --git a/docs/java-api/docs/delete-by-query.asciidoc b/docs/java-api/docs/delete-by-query.asciidoc deleted file mode 100644 index b20d615a79a..00000000000 --- a/docs/java-api/docs/delete-by-query.asciidoc +++ /dev/null @@ -1,34 +0,0 @@ -[[java-docs-delete-by-query]] -=== Delete By Query API - -The delete by query API allows one to delete documents from one or more -indices and one or more types based on a <>. - -It's available as a plugin so you need to explicitly declare it in your project: - -[source,xml] --------------------------------------------------- - - org.elasticsearch.plugin - elasticsearch-delete-by-query - ${es.version} - --------------------------------------------------- - -To use it from Java, you can do the following: - -[source,java] --------------------------------------------------- -import static org.elasticsearch.index.query.QueryBuilders.*; - -DeleteByQueryResponse response = client - .prepareDeleteByQuery("test") <1> - .setQuery(termQuery("_type", "type1")) <2> - .get(); --------------------------------------------------- -<1> index name -<2> query - -For more information on the delete by query operation, check out the -{ref}/docs-delete-by-query.html[delete_by_query API] -docs. diff --git a/docs/reference/docs.asciidoc b/docs/reference/docs.asciidoc index 0686de866ad..a35fa4c4a89 100644 --- a/docs/reference/docs.asciidoc +++ b/docs/reference/docs.asciidoc @@ -15,7 +15,6 @@ This section describes the following CRUD APIs: .Multi-document APIs * <> * <> -* <> NOTE: All CRUD APIs are single-index APIs. The `index` parameter accepts a single index name, or an `alias` which points to a single index. @@ -34,8 +33,6 @@ include::docs/multi-get.asciidoc[] include::docs/bulk.asciidoc[] -include::docs/delete-by-query.asciidoc[] - include::docs/termvectors.asciidoc[] include::docs/multi-termvectors.asciidoc[] diff --git a/docs/reference/docs/delete-by-query.asciidoc b/docs/reference/docs/delete-by-query.asciidoc deleted file mode 100644 index 911624441cb..00000000000 --- a/docs/reference/docs/delete-by-query.asciidoc +++ /dev/null @@ -1,147 +0,0 @@ -[[docs-delete-by-query]] -== Delete By Query API - -The delete by query API allows to delete documents from one or more -indices and one or more types based on a query. The query can either be -provided using a simple query string as a parameter, or using the -<> defined within the request -body. Here is an example: - -[source,js] --------------------------------------------------- -$ curl -XDELETE 'http://localhost:9200/twitter/tweet/_query?q=user:kimchy' - -$ curl -XDELETE 'http://localhost:9200/twitter/tweet/_query' -d '{ - "query" : { - "term" : { "user" : "kimchy" } - } -} -' --------------------------------------------------- - -NOTE: The query being sent in the body must be nested in a `query` key, same as -the <> works - -Both above examples end up doing the same thing, which is delete all -tweets from the twitter index for a certain user. The result of the -commands is: - -[source,js] --------------------------------------------------- -{ - "_indices" : { - "twitter" : { - "_shards" : { - "total" : 10, - "failed" : 0, - "successful" : 10, - } - } - } -} --------------------------------------------------- - -Note, delete by query bypasses versioning support. Also, it is not -recommended to delete "large chunks of the data in an index", many -times, it's better to simply reindex into a new index. - -[float] -[[multiple-indices]] -=== Multiple Indices and Types - -The delete by query API can be applied to multiple types within an -index, and across multiple indices. For example, we can delete all -documents across all types within the twitter index: - -[source,js] --------------------------------------------------- -$ curl -XDELETE 'http://localhost:9200/twitter/_query?q=user:kimchy' --------------------------------------------------- - -We can also delete within specific types: - -[source,js] --------------------------------------------------- -$ curl -XDELETE 'http://localhost:9200/twitter/tweet,user/_query?q=user:kimchy' --------------------------------------------------- - -We can also delete all tweets with a certain tag across several indices -(for example, when each user has his own index): - -[source,js] --------------------------------------------------- -$ curl -XDELETE 'http://localhost:9200/kimchy,elasticsearch/_query?q=tag:wow' --------------------------------------------------- - -Or even delete across all indices: - -[source,js] --------------------------------------------------- -$ curl -XDELETE 'http://localhost:9200/_all/_query?q=tag:wow' --------------------------------------------------- - -[float] -[[delete-by-query-parameters]] -=== Request Parameters - -When executing a delete by query using the query parameter `q`, the -query passed is a query string using Lucene query parser. There are -additional parameters that can be passed: - -[cols="<,<",options="header",] -|======================================================================= -|Name |Description -|df |The default field to use when no field prefix is defined within the -query. - -|analyzer |The analyzer name to be used when analyzing the query string. - -|default_operator |The default operator to be used, can be `AND` or -`OR`. Defaults to `OR`. -|======================================================================= - -[float] -[[request-body]] -=== Request Body - -The delete by query can use the <> within its body in order to express the query that should be -executed and delete all documents. The body content can also be passed -as a REST parameter named `source`. - -[float] -[[delete-by-query-distributed]] -=== Distributed - -The delete by query API is broadcast across all primary shards, and from -there, replicated across all shards replicas. - -[float] -[[delete-by-query-routing]] -=== Routing - -The routing value (a comma separated list of the routing values) can be -specified to control which shards the delete by query request will be -executed on. - -[float] -[[delete-by-query-consistency]] -=== Write Consistency - -Control if the operation will be allowed to execute based on the number -of active shards within that partition (replication group). The values -allowed are `one`, `quorum`, and `all`. The parameter to set it is -`consistency`, and it defaults to the node level setting of -`action.write_consistency` which in turn defaults to `quorum`. - -For example, in a N shards with 2 replicas index, there will have to be -at least 2 active shards within the relevant partition (`quorum`) for -the operation to succeed. In a N shards with 1 replica scenario, there -will need to be a single shard active (in this case, `one` and `quorum` -is the same). - -[float] -[[limitations]] -=== Limitations - -The delete by query does not support the following queries and filters: `has_child` and `has_parent`. diff --git a/docs/reference/docs/delete.asciidoc b/docs/reference/docs/delete.asciidoc index 976b73c8633..f36ffe7abf9 100644 --- a/docs/reference/docs/delete.asciidoc +++ b/docs/reference/docs/delete.asciidoc @@ -70,7 +70,7 @@ setting the routing parameter. Note that deleting a parent document does not automatically delete its children. One way of deleting all child documents given a parent's id is -to perform a <> on the child +to use the `delete-by-query` plugin to perform a delete on the child index with the automatically generated (and indexed) field _parent, which is in the format parent_type#parent_id. diff --git a/docs/reference/getting-started.asciidoc b/docs/reference/getting-started.asciidoc index c12a4a966b3..b1d40eaa4c3 100755 --- a/docs/reference/getting-started.asciidoc +++ b/docs/reference/getting-started.asciidoc @@ -478,17 +478,7 @@ Deleting a document is fairly straightforward. This example shows how to delete curl -XDELETE 'localhost:9200/customer/external/2?pretty' -------------------------------------------------- -We also have the ability to delete multiple documents that match a query condition. This example shows how to delete all customers whose names contain "John": - -[source,sh] --------------------------------------------------- -curl -XDELETE 'localhost:9200/customer/external/_query?pretty' -d ' -{ - "query": { "match": { "name": "John" } } -}' --------------------------------------------------- - -Note above that the URI has changed to `/_query` to signify a delete-by-query API with the delete query criteria in the body, but we are still using the DELETE verb. Don't worry yet about the query syntax as we will cover that later in this tutorial. +The `delete-by-query` plugin can delete all documents matching a specific query. === Batch Processing diff --git a/docs/reference/migration/migrate_1_0.asciidoc b/docs/reference/migration/migrate_1_0.asciidoc index d77d12fc00c..66b1245855b 100644 --- a/docs/reference/migration/migrate_1_0.asciidoc +++ b/docs/reference/migration/migrate_1_0.asciidoc @@ -169,7 +169,7 @@ behaviour can be reenabled on an index-by-index basis with the setting: === Search requests While the `search` API takes a top-level `query` parameter, the -<>, <> and +<>, `delete-by-query` and <> requests expected the whole body to be a query. These now _require_ a top-level `query` parameter: diff --git a/docs/reference/migration/migrate_2_0.asciidoc b/docs/reference/migration/migrate_2_0.asciidoc index c8aa72dd433..b7237a6c44a 100644 --- a/docs/reference/migration/migrate_2_0.asciidoc +++ b/docs/reference/migration/migrate_2_0.asciidoc @@ -72,7 +72,7 @@ In addition, the following node settings related to routing have been deprecated === Async replication The `replication` parameter has been removed from all CRUD operations (index, -update, delete, bulk, delete-by-query). These operations are now synchronous +update, delete, bulk). These operations are now synchronous only, and a request will only return once the changes have been replicated to all active shards in the shard group. diff --git a/docs/reference/search/percolate.asciidoc b/docs/reference/search/percolate.asciidoc index 9dfda915626..23993345f49 100644 --- a/docs/reference/search/percolate.asciidoc +++ b/docs/reference/search/percolate.asciidoc @@ -499,7 +499,7 @@ The `wildcard` and `regexp` query natively use a lot of memory and because the p this can easily take up the available memory in the heap space. If possible try to use a `prefix` query or ngramming to achieve the same result (with way less memory being used). -The delete-by-query API doesn't work to unregister a query, it only deletes the percolate documents from disk. In order +The `delete-by-query` plugin doesn't work to unregister a query, it only deletes the percolate documents from disk. In order to update the registered queries in memory the index needs be closed and opened. [float]