"not_analyzed" fields do only make exact matches of the full query.
They are especially useful for tags that shouldn't be split into multiple tokens: ids, tags, mails addresses, name of cities, etc
The performance and side effects with aggregations will depends on what you are trying to achieve.
If you make aggregations on string fields containing tags; cities names for example, you would want to not analyze or "New York" will be split as "New" and "York" for example. Statistics made on "York" will refer both for New York and York, the english city! This is not wanted.
If you are making aggregation on texts, to find the more frequent words for example, you could want to have an analyzed field because you would want to count "new" and "york" separately.
See the documentation for more information on how the analysis affects the aggregations.