private static RatingDataPerYear getRatingForSimpleQuery(string query) { Dictionary <int, RatingData> result = new Dictionary <int, RatingData>(); AggregationContainerDescriptor <HlidacStatu.Lib.Data.Smlouva> aggY = new AggregationContainerDescriptor <HlidacStatu.Lib.Data.Smlouva>() .DateHistogram("x-agg", h => h .Field(f => f.datumUzavreni) .CalendarInterval(Nest.DateInterval.Year) ); AggregationContainerDescriptor <HlidacStatu.Lib.Data.Smlouva> aggYSum = new AggregationContainerDescriptor <HlidacStatu.Lib.Data.Smlouva>() .DateHistogram("x-agg", h => h .Field(f => f.datumUzavreni) .CalendarInterval(Nest.DateInterval.Year) .Aggregations(agg => agg .Sum("sumincome", s => s .Field(ff => ff.CalculatedPriceWithVATinCZK) ) ) ); //init result for (int year = BasicDataPerYear.UsualFirstYear; year <= DateTime.Now.Year; year++) { result.Add(year, RatingData.Empty()); } var bezCenyStat = HlidacStatu.Lib.Data.Smlouva.Search.SimpleSearch("issues.issueTypeId:100 " + query, 1, 0, HlidacStatu.Lib.Data.Smlouva.Search.OrderResult.FastestForScroll, aggY, exactNumOfResults: true); if (bezCenyStat.IsValid) { foreach (Nest.DateHistogramBucket val in ((BucketAggregate)bezCenyStat.ElasticResults.Aggregations["x-agg"]).Items) { if (result.ContainsKey(val.Date.Year)) { result[val.Date.Year].NumBezCeny = val.DocCount ?? 0; } } } var bezSmluvniStr = HlidacStatu.Lib.Data.Smlouva.Search.SimpleSearch("(issues.issueTypeId:18 OR issues.issueTypeId:12) AND " + query, 1, 0, HlidacStatu.Lib.Data.Smlouva.Search.OrderResult.FastestForScroll, aggYSum, exactNumOfResults: true); if (bezSmluvniStr.IsValid) { foreach (Nest.DateHistogramBucket val in ((BucketAggregate)bezSmluvniStr.ElasticResults.Aggregations["x-agg"]).Items) { if (result.ContainsKey(val.Date.Year)) { result[val.Date.Year].NumBezSmluvniStrany = val.DocCount ?? 0; result[val.Date.Year].SumKcBezSmluvniStrany = (decimal)(((Nest.DateHistogramBucket)val).Sum("sumincome").Value ?? 0); } } } QueryContainer qc = new QueryContainerDescriptor <HlidacStatu.Lib.Data.Smlouva>() .Bool(b => b .Must( m => m.Term(t => t.Field(f => f.SVazbouNaPolitikyNedavne).Value(true)) , m1 => Lib.Data.Smlouva.Search.GetSimpleQuery(query) ) ); var vazbyNaSoukr = HlidacStatu.Lib.Data.Smlouva.Search.SearchRaw(qc, 1, 0, HlidacStatu.Lib.Data.Smlouva.Search.OrderResult.FastestForScroll, aggYSum); if (vazbyNaSoukr.IsValid) { foreach (Nest.DateHistogramBucket val in ((BucketAggregate)vazbyNaSoukr.ElasticResults.Aggregations["x-agg"]).Items) { if (result.ContainsKey(val.Date.Year)) { result[val.Date.Year].NumSPolitiky = val.DocCount ?? 0; result[val.Date.Year].SumKcSPolitiky = (decimal)(((Nest.DateHistogramBucket)val).Sum("sumincome").Value ?? 0); } } } //calculate percents return(new RatingDataPerYear(result, GetBasicStatisticForSimpleQuery(query))); }