Fetching specific fields in ES 5.X Java client API

OK, thanks for the clarification. Just a few questions to make sure I get the concept right.

To get the specific fields I should either set them to store:true and use the addStoredFields() as in my code above, or use source filtering, which in the Java API is done with setFetchSource() as in the SO post I linked in my initial post in this thread?

The choice whether to use store:true or source filtering would depend on whether I have a set of smaller fields that I want to retrieve separately as per the ES documentation?

So source filtering still loads the whole source but with stored fields I can only load specific set of files? And if the source has no huge fields in it, source filtering is fine, otherwise I should use store:true? But the store:true has the impact of requiring more separate disk access, and thus some performance impact?