private AggregationContainerDescriptor <TEntity> GetAggregation(List <AggregationItem> aggregations) { AggregationContainerDescriptor <TEntity> aggregation = new AggregationContainerDescriptor <TEntity>(); if (aggregations != null) { foreach (var item in aggregations) { string name = item.Name; switch (item.Type) { case AggregationExpressionType.Count: aggregation.Terms(name, aggr => { aggr.Field(item.Name) .Size(item.Size) //.Exclude(item.ExcludedItems) .Aggregations(child => GetAggregation(item.Children)); if (!string.IsNullOrEmpty(item.SortField)) { aggr.Order(new TermsOrder() { Key = item.SortField, Order = item.SortType == "asc" ? SortOrder.Ascending : SortOrder.Descending }); } return(aggr); }); break; case AggregationExpressionType.Range: SetRangeAggregationContainer(item, aggregation); break; case AggregationExpressionType.Sum: aggregation.Sum(name, d => d.Field(item.Name)); break; case AggregationExpressionType.Avg: aggregation.Average(name, d => d.Field(item.Name)); break; case AggregationExpressionType.Min: aggregation.Min(name, d => d.Field(item.Name)); break; case AggregationExpressionType.Max: aggregation.Max(name, d => d.Field(item.Name)); break; default: break; } } } return(aggregation); }
protected IAggregationContainer Combine(AggregationContainerDescriptor <CommitActivity> aggs) => aggs .Average("average_per_child", avg => avg.Field(p => p.ConfidenceFactor)) && MaxPerChild(aggs) && MinPerChild(aggs) && null;
public static AggregationContainerDescriptor <T> AverageBy <T>(this AggregationContainerDescriptor <T> agg, Expression <Func <T, object> > fieldGetter) where T : class { var aggName = fieldGetter.GetAggName(AggType.Average); return(agg.Average(aggName, x => x.Field(fieldGetter))); }