After some research I found a few features that almost does the right thing:
- terminate_after - It has a different use case and doesn't do any shard-level sorting before terminating.
- shard_size - It's only for aggregations
So, it would seem it's currently not possible.