On the client, you can do something like this (java version). Get the list of id’s using n1ql, then do the deletes using the kv api. The deletes will be done in up to 16 parallel executions.
ReactiveCluster reactiveCluster = cluster.reactive();
ReactiveCollection reactiveCollection = bucket.defaultCollection().reactive();
reactiveCluster.query("Select b.Id from bucket1 as b where creationTimeStamp BETWEEN T1 AND T2")
.flatMapMany( result -> result.rowsAsObject())
.parallel(16).runOn(Schedulers.parallel())
.map( r -> reactiveCollection.remove( r.getString("id"))).collectList().block();