Delete by Query: transaction like?

I have a three-level parent child: MyGrandParentType, MyParentType,
Is a good way to use delete-by-query to build *one *big query that
deletes a grandparent, a parent and all children all at the same time?
I'm guessing this would be a "bool" Query with 3 parts: find the right
grandparent, the right parent, and the right children.

In the example below, the assumption is I have the grandparent ID
"myGrandID" and parent ID "myParentID" and that grandparent to parent is

"query": {
"bool": {
"should": [
"bool": {
"must": [
"term": { "_type":"MyGrandParentType" },
"term": { "_id": "myGrandID" }
"bool": {
"must": [
"term": { "_type":"MyParentType" },
"term": { "_id": "myParentID" }
"bool": {
"must": [
"term": { "_type":"MyChildType" },
"term": { "_parent": "myParentId" }
"|minimum_number_should_match": 3|

I would also specify routing by myGrandID and explicitly list the three
types in the request. I am also expecting this only be a request to one

Does this one-big-query approach have any advantages or disadvantages
over 3 separate delete by query requests one delete quest for each type
(other than 1 instead of 3 requests) ?
Does this one big delete-by-query actually do it as a "transaction"?
By "transaction", I'm wondering if the entire thing will fail or succeed
as one, because I'm using routing, so it is really going to succeed or
fail on one shard and either it finds them all and deletes them all or
it doesn't.

I could query before I delete, so I could make the
"|minimum_number_should_match" exact ( 1 grand + 1 parent + n
children).||Would that have any advantage to making it more