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); }
public static AggregationContainerDescriptor <dynamic> DateAggregationSelector(this AggregationContainerDescriptor <dynamic> agg, IEnumerable <Facet> dateFacets) { foreach (var dateFacet in dateFacets) { agg = agg.Min(dateFacet.Name + "_min", ter => ter.Field(dateFacet.Name + ".outbound.value")); agg = agg.Max(dateFacet.Name + "_max", ter => ter.Field(dateFacet.Name + ".outbound.value")); } return(agg); }
private static AggregationContainerDescriptor <CommitActivity> MaxPerChild(AggregationContainerDescriptor <CommitActivity> aggs) => aggs.Max("max_per_child", avg => avg.Field(p => p.ConfidenceFactor));
public static AggregationContainerDescriptor <T> MaxBy <T>(this AggregationContainerDescriptor <T> agg, Expression <Func <T, object> > fieldGetter) where T : class { var aggName = fieldGetter.GetAggName(AggType.Max); return(agg.Max(aggName, x => x.Field(fieldGetter))); }