Facets can be aggregated today by counting them, aggregating by summing their association values, or summing the scores of the documents. Applications can write their own FacetsAggregator to compute the value of the facet in other ways. Following the new expressions module, I think it will be interesting to allow aggregating facets by arbitrary expressions, e.g. _score * sqrt(price) where 'price' is an NDV field. I'd like to explore allowing any ValueSource to be passed in and write a ValueSourceFacetsAggregator.