public static int?GetCount <T>(this AggregationsHelper aggs, Expression <Func <T, object> > fieldGetter, Expression <Func <T, object> > filterRule = null) { var aggName = fieldGetter.GetAggName(AggType.Count); if (filterRule == null) { var itemsTerms = aggs.ValueCount(aggName); if (!itemsTerms.Value.HasValue) { return(null); } return((int)itemsTerms.Value); } else { var condAggName = filterRule.GenerateFilterName(); var filterAgg = aggs.Filter(condAggName); var sumAgg = filterAgg.Sum(aggName); if (!sumAgg.Value.HasValue) { return(null); } return((int)sumAgg.Value); } }
protected virtual IEnumerable <BaseFacet> GlobalFacets(IReadOnlyDictionary <string, IAggregate> facets, string facetName) { var aggregations = new AggregationsHelper(facets); var globalAggregations = new AggregationsHelper(aggregations.Global(facetName).Aggregations); var globalFilter = globalAggregations.Filter(SearchConstants.SearchFacetNames.GlobalFilter); var items = globalFilter.Terms(facetName).Buckets.Select(bucket => new BaseFacet { Name = bucket.Key, Count = bucket.DocCount ?? default });
public static AggregationsHelper GetAggregationContainingResult <T>(this AggregationsHelper aggs, Expression <Func <T, object> > filterRule = null) { if (filterRule == null) { return(aggs); } var filterName = filterRule.GenerateFilterName(); aggs.CheckForAggregationInResult(filterName); return(aggs.Filter(filterName)); }
public static K GetFirstBy <T, K>(this AggregationsHelper aggs, Expression <Func <T, K> > fieldGetter, Expression <Func <T, object> > filterRule = null) { var aggName = fieldGetter.GetAggName(AggType.Sum); if (filterRule == null) { var terms = aggs.Terms(aggName); return(Filters.StringToAnything <K>(terms.Items[0].Key)); } else { var filterName = filterRule.GenerateFilterName(); var filterAgg = aggs.Filter(filterName); var termsAgg = filterAgg.Terms(aggName); return(Filters.StringToAnything <K>(termsAgg.Items[0].Key)); } }
public static K GetSum <T, K>(this AggregationsHelper aggs, Expression <Func <T, K> > fieldGetter, Expression <Func <T, object> > filterRule = null) { var aggName = fieldGetter.GetAggName(AggType.Sum); if (filterRule == null) { var sumAggs = aggs.Sum(aggName); return(ValueAsUndType <K>(sumAggs)); } else { var filterName = filterRule.GenerateFilterName(); var filterAgg = aggs.Filter(filterName); var sumAgg = filterAgg.Sum(aggName); return(ValueAsUndType <K>(sumAgg)); } }
public static int GetCardinality <T>(this AggregationsHelper aggs, Expression <Func <T, object> > fieldGetter, Expression <Func <T, object> > filterRule = null) { var aggName = fieldGetter.GetAggName(AggType.Cardinality); ValueMetric itemsTerms; if (filterRule == null) { itemsTerms = aggs.Cardinality(aggName); } else { var filterName = filterRule.GenerateFilterName(); var filterAgg = aggs.Filter(filterName); itemsTerms = filterAgg.Cardinality(aggName); } if (itemsTerms?.Value == null) { throw new InvalidOperationException("Cardinality not available"); } return((int)itemsTerms.Value.Value); }