Performance on query with nested objects

Great. So we prove that ready a BIG document from disk is costing more than reading a smaller one.

That's a different question. The previous question was related to "how much it costs to read a doc from disk to generate the response for the 10 hits that we need to retrieve".
The new question is more about "the response time when searching with a term query vs with a geo_shape query.

That's like comparing oranges and apples to me. There is a price to pay to make that kind of filtering, whatever the size of the fields you will need to read after having been able to select 10 of them.

Is there any way to return the fields from an inner_hit that is not from _source

I don't know. I don't think so. The only thing I can see but that will probably not answer to your needs, is to use a copy_to option in the nested object to copy values to the parent object in a stored field. But as a result you won't get only the internal match.

That could be better to provide a full recreation script as described in About the Elasticsearch category. It will help to better understand what you are doing. Please, try to keep the example as simple as possible.