Getting RoutingMissingException while migrating from ES 2.2.0 to ES 2.3.0

I am using prepareDelete query in a BulkRequest where I have a set of IDs which I have to delete.

I used:

BulkRequestBuilder bulkRequest = searchClient.prepareBulk();
for id in ids {
    bulkRequest.add(searchClient.prepareDelete("indexName", "childType", id));
}
BulkResponse bulkResponse = bulkRequest.execute().actionGet();

This structure for deletion was working in ES 2.2.0 but in ES 2.3.0 I get RoutingMissingException.

If I print bilkResponse.buildFailureMessage() and I get

[0]: index [indexName], type [childType], id [215f3228a3c53970883ae0d3b22dae6f], message [[indexName] RoutingMissingException[routing is required for [indexName]/[childType]/[215f3228a3c53970883ae0d3b22dae6f]]]

I have not even changed the settings/mapping of the existing index.

What could be the reason?

I think this is the cause: https://github.com/elastic/elasticsearch/pull/16675 . You have set routing required in your mapping (can you please confirm this?), but you are not providing the routing value as part of the delete call. We previously broadcasted the delete operation to all shards in that case and tried the delete on all shards rather than failing, but that mechanism was initially removed from the delete api in 2.0. As part of bulk, the broadcast delete had bugs in it and could cause more harm than benefits. You can read here what the problems were around it , which is why we treated it as a bugfix rather than a breaking change.

Cheers
Luca