Exemplo n.º 1
0
        public static IReadOnlyCollection <DateHistogramBucket> GetDateHistogram <T>(this KeyedBucket <T> item,
                                                                                     Expression <Func <T, Object> > fieldGetter)
        {
            var histogramItem = item.DateHistogram(GetName(fieldGetter));

            return(histogramItem.Buckets);
        }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 3
0
 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);
        }
Exemplo n.º 5
0
        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);
            }
        }
Exemplo n.º 6
0
        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);
        }