diff --git a/modules/elasticsearch/src/main/java/org/elasticsearch/action/bulk/BulkRequest.java b/modules/elasticsearch/src/main/java/org/elasticsearch/action/bulk/BulkRequest.java index 94448ff5b13..8f23b69925d 100644 --- a/modules/elasticsearch/src/main/java/org/elasticsearch/action/bulk/BulkRequest.java +++ b/modules/elasticsearch/src/main/java/org/elasticsearch/action/bulk/BulkRequest.java @@ -141,7 +141,7 @@ public class BulkRequest implements ActionRequest { } if ("delete".equals(action)) { - add(new DeleteRequest(index, type, id).routing(routing)); + add(new DeleteRequest(index, type, id).parent(parent).routing(routing)); } else { nextMarker = findNextMarker(marker, from, data, length); if (nextMarker == -1) { diff --git a/modules/elasticsearch/src/main/java/org/elasticsearch/action/delete/DeleteRequest.java b/modules/elasticsearch/src/main/java/org/elasticsearch/action/delete/DeleteRequest.java index 13a227317d8..8080803c5a8 100644 --- a/modules/elasticsearch/src/main/java/org/elasticsearch/action/delete/DeleteRequest.java +++ b/modules/elasticsearch/src/main/java/org/elasticsearch/action/delete/DeleteRequest.java @@ -167,6 +167,17 @@ public class DeleteRequest extends ShardReplicationOperationRequest { return this; } + /** + * Sets the parent id of this document. Will simply set the routing to this value, as it is only + * used for routing with delete requests. + */ + public DeleteRequest parent(String parent) { + if (routing == null) { + routing = parent; + } + return this; + } + /** * Controls the shard routing of the request. Using this value to hash the shard * and not the id. diff --git a/modules/elasticsearch/src/main/java/org/elasticsearch/rest/action/delete/RestDeleteAction.java b/modules/elasticsearch/src/main/java/org/elasticsearch/rest/action/delete/RestDeleteAction.java index f4522b5a2d3..afef0ccdda0 100644 --- a/modules/elasticsearch/src/main/java/org/elasticsearch/rest/action/delete/RestDeleteAction.java +++ b/modules/elasticsearch/src/main/java/org/elasticsearch/rest/action/delete/RestDeleteAction.java @@ -50,6 +50,7 @@ public class RestDeleteAction extends BaseRestHandler { @Override public void handleRequest(final RestRequest request, final RestChannel channel) { DeleteRequest deleteRequest = new DeleteRequest(request.param("index"), request.param("type"), request.param("id")); + deleteRequest.parent(request.param("parent")); deleteRequest.routing(request.param("routing")); deleteRequest.timeout(request.paramAsTime("timeout", DeleteRequest.DEFAULT_TIMEOUT)); deleteRequest.refresh(request.paramAsBoolean("refresh", deleteRequest.refresh()));