public static IReadOnlyCollection <DateHistogramBucket> GetDateHistogram <T>(this KeyedBucket <T> item, Expression <Func <T, Object> > fieldGetter) { var histogramItem = item.DateHistogram(GetName(fieldGetter)); return(histogramItem.Buckets); }
public async Task <IEnumerable <TraceOperationHistogram> > GetSpanHistogramByOperaionName(TraceQuery traceQuery) { traceQuery.Ensure(); var index = Indices.Index(_indexManager.CreateTracingIndex()); var query = BuildTracesQuery(traceQuery); var histogramAggregationsResult = await _elasticClient.SearchAsync <Span>(s => s.Index(index).Size(0).Query(query) .Aggregations(agg => agg.Terms("group_by_operationName", g => g.Script(sc => sc.Source("doc['operationName'].value.toUpperCase()")) ))); var histogramAggregations = histogramAggregationsResult.Aggregations.FirstOrDefault().Value as BucketAggregate; if (histogramAggregations == null || histogramAggregations.Items == null) { return(new TraceOperationHistogram[0]); } var traceHistograms = histogramAggregations.Items .Select(x => { KeyedBucket <object> bucket = x as KeyedBucket <object>; return(new TraceOperationHistogram { OperationName = bucket.Key.ToString(), Count = bucket.DocCount.HasValue ? bucket.DocCount.Value : 0 }); }) .OrderByDescending(x => x.Count) .ToArray(); return(traceHistograms); }
private ISearchSummaryDocumentDTO GetSearchTypeStatistics(KeyedBucket keyBucket) { return(new SearchTypeStatisticsDocumentDTO() { Type = GetType(keyBucket.Key), Count = keyBucket.DocCount.Value }); }
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) { var item = JObject.Load(reader); var typeToken = item.SelectToken("Data.@type") ?? item.SelectToken("data.@type"); IBucket value = null; if (typeToken != null) { string type = typeToken.Value <string>(); IDictionary <string, IAggregate> aggregations = null; var aggregationsToken = item.SelectToken("Aggregations") ?? item.SelectToken("aggregations"); aggregations = aggregationsToken?.ToObject <IDictionary <string, IAggregate> >(); switch (type) { case "datehistogram": var timeZoneToken = item.SelectToken("Data.@timezone") ?? item.SelectToken("data.@timezone"); var kind = timeZoneToken != null ? DateTimeKind.Unspecified : DateTimeKind.Utc; var key = item.SelectToken("Key") ?? item.SelectToken("key"); var date = new DateTime(_epochTicks + ((long)key * TimeSpan.TicksPerMillisecond), kind); value = new DateHistogramBucket(date, aggregations); break; case "range": value = new RangeBucket(aggregations); break; case "string": value = new KeyedBucket <string>(aggregations); break; case "double": value = new KeyedBucket <double>(aggregations); break; case "object": value = new KeyedBucket <object>(aggregations); break; } } if (value == null) { value = new KeyedBucket <object>(); } serializer.Populate(item.CreateReader(), value); return(value); }
private static void GetDictResult(Dictionary <string, int> dict, KeyedBucket <string> item, string unitArea) { int count = 0; if (dict.TryGetValue(unitArea, out count)) { dict[unitArea] = count + (int)item.DocCount; } else { dict.Add(unitArea, (int)item.DocCount); } }
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) { var item = JObject.Load(reader); var typeToken = item.SelectToken("Data.@type") ?? item.SelectToken("data.@type"); IBucket value = null; if (typeToken != null) { string type = typeToken.Value <string>(); switch (type) { case "datehistogram": value = new DateHistogramBucket(); break; case "range": value = new RangeBucket(); break; case "string": value = new KeyedBucket <string>(); break; case "double": value = new KeyedBucket <double>(); break; case "object": value = new KeyedBucket <object>(); break; } } if (value == null) { value = new KeyedBucket <object>(); } serializer.Populate(item.CreateReader(), value); return(value); }