private Aggragtion[] MaxAggregation <T>(string field, SearchFilter[] filters = null, string indexName = "") where T : class { indexName = CurrentIndexName(indexName); var request = new SearchRequest <T> { Size = 0, Aggregations = new MaxAggregation("agg_" + field, field) }; AppendFilters <T>(request, filters); var result = _client.Search <T>(request); var aggHelper = result.Aggs.Average("agg_" + field); List <Aggragtion> ret = new List <Aggragtion>(); var aggregation = new Aggragtion() { Field = field, Result = aggHelper.Value != null ? (double)aggHelper.Value : 0, Element = new Dictionary <string, object>() }; aggregation.Element.Add(field, aggHelper.Value); ret.Add(aggregation); return(ret.ToArray()); }
private Aggragtion[] CountAggregation <T>(string field, SearchFilter[] filters = null, string indexName = "") where T : class { indexName = CurrentIndexName(indexName); var request = new SearchRequest <T> { Size = 0, Aggregations = new TermsAggregation("agg_" + field) { Field = field, Size = 1000 } }; AppendFilters <T>(request, filters); var result = _client.Search <T>(request); var aggHelper = result.Aggs.Terms("agg_" + field); List <Aggragtion> ret = new List <Aggragtion>(); foreach (var bucket in aggHelper.Buckets) { var aggregation = new Aggragtion() { Field = field, Result = bucket.DocCount != null ? (long)bucket.DocCount : 0, Element = new Dictionary <string, object>() }; aggregation.Element.Add(field, bucket.Key); ret.Add(aggregation); } return(ret.ToArray()); }