This is explain in the reference doc, in particular in the architecture chapter.
In short, es-hadoop will get only the data needed from each shard; it would be highly ineffective and frankly pointless to get all the data and filter things in memory (why would it do that when ES can do all this itself)?