@@ -19,14 +19,14 @@ internal class AggregationResultJsonConverter : JsonConverter
1919
2020 public override object ReadJson ( JsonReader reader , Type objectType , object existingValue , JsonSerializer serializer ) => this . ReadAggregation ( reader , serializer ) ;
2121
22- public override bool CanConvert ( Type objectType ) => objectType == typeof ( IAggregationResult ) ;
22+ public override bool CanConvert ( Type objectType ) => objectType == typeof ( IAggregationItem ) ;
2323
2424 public override void WriteJson ( JsonWriter writer , object value , JsonSerializer serializer )
2525 {
2626 throw new NotSupportedException ( ) ;
2727 }
2828
29- private IAggregationResult ReadAggregation ( JsonReader reader , JsonSerializer serializer )
29+ private IAggregationItem ReadAggregation ( JsonReader reader , JsonSerializer serializer )
3030 {
3131 if ( reader . TokenType != JsonToken . StartObject )
3232 return null ;
@@ -35,11 +35,11 @@ private IAggregationResult ReadAggregation(JsonReader reader, JsonSerializer ser
3535 if ( reader . TokenType != JsonToken . PropertyName )
3636 return null ;
3737
38- IAggregationResult result = null ;
38+ IAggregationItem item = null ;
3939
4040 var property = reader . Value as string ;
4141 if ( _numeric . IsMatch ( property ) )
42- result = GetPercentilesMetricAggregation ( reader , serializer , oldFormat : true ) ;
42+ item = GetPercentilesMetric ( reader , serializer , oldFormat : true ) ;
4343
4444 var meta = ( property == "meta" ) ? GetMetadata ( reader ) : null ;
4545
@@ -50,42 +50,44 @@ private IAggregationResult ReadAggregation(JsonReader reader, JsonSerializer ser
5050 case "values" :
5151 reader . Read ( ) ;
5252 reader . Read ( ) ;
53- result = GetPercentilesMetricAggregation ( reader , serializer ) ;
53+ item = GetPercentilesMetric ( reader , serializer ) ;
5454 break ;
5555 case "value" :
56- result = GetValueMetricOrAggregation ( reader , serializer ) ;
56+ item = GetValueMetric ( reader , serializer ) ;
5757 break ;
5858 case "buckets" :
5959 case "doc_count_error_upper_bound" :
60- result = GetBucketAggregation ( reader , serializer ) ;
60+ item = GetBucket ( reader , serializer ) ;
6161 break ;
6262 case "key" :
63- result = GetKeyedBucketItem ( reader , serializer ) ;
63+ item = GetKeyedBucketItem ( reader , serializer ) ;
6464 break ;
6565 case "from" :
6666 case "to" :
67- result = GetRangeAggregation ( reader , serializer ) ;
67+ item = GetRangeItem ( reader , serializer ) ;
6868 break ;
6969 case "key_as_string" :
70- result = GetDateHistogramAggregation ( reader , serializer ) ;
70+ item = GetDateHistrogramItem ( reader , serializer ) ;
7171 break ;
7272 case "count" :
73- result = GetStatsAggregation ( reader , serializer ) ;
73+ item = GetStatsMetric ( reader , serializer ) ;
7474 break ;
7575 case "doc_count" :
76- result = GetSingleBucketAggregation ( reader , serializer ) ;
76+ item = GetDocCountBucket ( reader , serializer ) ;
7777 break ;
7878 case "bounds" :
79- result = GetGeoBoundsMetricAggregation ( reader , serializer ) ;
79+ item = GetGeoBoundsMetric ( reader , serializer ) ;
8080 break ;
8181 case "hits" :
82- result = GetHitsAggregation ( reader , serializer ) ;
82+ item = GetTopHitsMetric ( reader , serializer ) ;
8383 break ;
8484 default :
8585 return null ;
8686 }
87- result . Meta = meta ;
88- return result ;
87+
88+ if ( item is IAggregationResult )
89+ ( ( IAggregationResult ) item ) . Meta = meta ;
90+ return item ;
8991 }
9092
9193 private Dictionary < string , object > GetMetadata ( JsonReader reader )
@@ -105,7 +107,7 @@ private Dictionary<string, object> GetMetadata(JsonReader reader)
105107 return meta ;
106108 }
107109
108- private IAggregationResult GetHitsAggregation ( JsonReader reader , JsonSerializer serializer )
110+ private IAggregationItem GetTopHitsMetric ( JsonReader reader , JsonSerializer serializer )
109111 {
110112 reader . Read ( ) ;
111113 var o = JObject . Load ( reader ) ;
@@ -119,7 +121,7 @@ private IAggregationResult GetHitsAggregation(JsonReader reader, JsonSerializer
119121 return new TopHitsMetric ( hits , serializer ) { Total = total , MaxScore = maxScore } ;
120122 }
121123
122- private IAggregationResult GetGeoBoundsMetricAggregation ( JsonReader reader , JsonSerializer serializer )
124+ private IAggregationItem GetGeoBoundsMetric ( JsonReader reader , JsonSerializer serializer )
123125 {
124126 reader . Read ( ) ;
125127 var o = JObject . Load ( reader ) ;
@@ -146,7 +148,7 @@ private IAggregationResult GetGeoBoundsMetricAggregation(JsonReader reader, Json
146148 return geoBoundsMetric ;
147149 }
148150
149- private IAggregationResult GetPercentilesMetricAggregation ( JsonReader reader , JsonSerializer serializer , bool oldFormat = false )
151+ private IAggregationItem GetPercentilesMetric ( JsonReader reader , JsonSerializer serializer , bool oldFormat = false )
150152 {
151153 var metric = new PercentilesMetric ( ) ;
152154 var percentileItems = new List < PercentileItem > ( ) ;
@@ -177,18 +179,18 @@ private IAggregationResult GetPercentilesMetricAggregation(JsonReader reader, Js
177179 return metric ;
178180 }
179181
180- private IAggregationResult GetSingleBucketAggregation ( JsonReader reader , JsonSerializer serializer )
182+ private IAggregationItem GetDocCountBucket ( JsonReader reader , JsonSerializer serializer )
181183 {
182184 reader . Read ( ) ;
183185 var docCount = ( reader . Value as long ? ) . GetValueOrDefault ( 0 ) ;
184- var bucket = new SingleBucket { DocCount = docCount } ;
186+ var bucket = new DocCountBucket { DocCount = docCount } ;
185187 reader . Read ( ) ;
186188 if ( reader . TokenType == JsonToken . PropertyName
187189 && ( ( string ) reader . Value ) == "buckets"
188190 )
189191 {
190- var b = this . GetBucketAggregation ( reader , serializer ) as Bucket ;
191- return new Bucket
192+ var b = this . GetBucket ( reader , serializer ) as BucketDto ;
193+ return new BucketDto
192194 {
193195 DocCount = docCount ,
194196 Items = b . Items
@@ -200,7 +202,7 @@ private IAggregationResult GetSingleBucketAggregation(JsonReader reader, JsonSer
200202 return bucket ;
201203 }
202204
203- private IAggregationResult GetStatsAggregation ( JsonReader reader , JsonSerializer serializer )
205+ private IAggregationItem GetStatsMetric ( JsonReader reader , JsonSerializer serializer )
204206 {
205207 reader . Read ( ) ;
206208 var count = ( reader . Value as long ? ) . GetValueOrDefault ( 0 ) ;
@@ -239,7 +241,7 @@ private IAggregationResult GetStatsAggregation(JsonReader reader, JsonSerializer
239241 return GetExtendedStatsAggregation ( statsMetric , reader ) ;
240242 }
241243
242- private IAggregationResult GetExtendedStatsAggregation ( StatsMetric statsMetric , JsonReader reader )
244+ private IAggregationItem GetExtendedStatsAggregation ( StatsMetric statsMetric , JsonReader reader )
243245 {
244246 var extendedStatsMetric = new ExtendedStatsMetric ( )
245247 {
@@ -295,7 +297,7 @@ private IAggregationResult GetExtendedStatsAggregation(StatsMetric statsMetric,
295297 return extendedStatsMetric ;
296298 }
297299
298- private IAggregationResult GetDateHistogramAggregation ( JsonReader reader , JsonSerializer serializer )
300+ private IAggregationItem GetDateHistrogramItem ( JsonReader reader , JsonSerializer serializer )
299301 {
300302 var keyAsString = reader . ReadAsString ( ) ;
301303 reader . Read ( ) ; reader . Read ( ) ;
@@ -310,15 +312,15 @@ private IAggregationResult GetDateHistogramAggregation(JsonReader reader, JsonSe
310312
311313 }
312314
313- private IAggregationResult GetKeyedBucketItem ( JsonReader reader , JsonSerializer serializer )
315+ private IAggregationItem GetKeyedBucketItem ( JsonReader reader , JsonSerializer serializer )
314316 {
315317 var key = reader . ReadAsString ( ) ;
316318 reader . Read ( ) ;
317319 var property = reader . Value as string ;
318320 if ( property == "from" || property == "to" )
319- return GetRangeAggregation ( reader , serializer , key ) ;
321+ return GetRangeItem ( reader , serializer , key ) ;
320322
321- var keyItem = new KeyedBucket ( ) ;
323+ var keyItem = new KeyedBucketItem ( ) ;
322324 keyItem . Key = key ;
323325
324326 if ( property == "key_as_string" )
@@ -344,7 +346,7 @@ private IAggregationResult GetKeyedBucketItem(JsonReader reader, JsonSerializer
344346
345347 }
346348
347- private IAggregationResult GetSignificantTermItem ( JsonReader reader , JsonSerializer serializer , KeyedBucket keyItem )
349+ private IAggregationItem GetSignificantTermItem ( JsonReader reader , JsonSerializer serializer , KeyedBucketItem keyItem )
348350 {
349351 reader . Read ( ) ;
350352 var score = reader . Value as double ? ;
@@ -354,7 +356,7 @@ private IAggregationResult GetSignificantTermItem(JsonReader reader, JsonSeriali
354356 var significantTermItem = new SignificantTermItem ( )
355357 {
356358 Key = keyItem . Key ,
357- DocCount = keyItem . DocCount ,
359+ DocCount = keyItem . DocCount . GetValueOrDefault ( 0 ) ,
358360 BgCount = bgCount . GetValueOrDefault ( 0 ) ,
359361 Score = score . GetValueOrDefault ( 0 )
360362 } ;
@@ -363,12 +365,12 @@ private IAggregationResult GetSignificantTermItem(JsonReader reader, JsonSeriali
363365 return significantTermItem ;
364366 }
365367
366- private IDictionary < string , IAggregationResult > GetNestedAggregations ( JsonReader reader , JsonSerializer serializer )
368+ private IDictionary < string , IAggregationItem > GetNestedAggregations ( JsonReader reader , JsonSerializer serializer )
367369 {
368370 if ( reader . TokenType != JsonToken . PropertyName )
369371 return null ;
370372
371- var nestedAggs = new Dictionary < string , IAggregationResult > ( ) ;
373+ var nestedAggs = new Dictionary < string , IAggregationItem > ( ) ;
372374 var currentDepth = reader . Depth ;
373375 do
374376 {
@@ -383,9 +385,9 @@ private IDictionary<string, IAggregationResult> GetNestedAggregations(JsonReader
383385 return nestedAggs ;
384386 }
385387
386- private IAggregationResult GetBucketAggregation ( JsonReader reader , JsonSerializer serializer )
388+ private IAggregationItem GetBucket ( JsonReader reader , JsonSerializer serializer )
387389 {
388- var bucket = new Bucket ( ) ;
390+ var bucket = new BucketDto ( ) ;
389391 var property = reader . Value as string ;
390392 if ( property == "doc_count_error_upper_bound" )
391393 {
@@ -400,13 +402,13 @@ private IAggregationResult GetBucketAggregation(JsonReader reader, JsonSerialize
400402 bucket . SumOtherDocCount = reader . Value as long ? ;
401403 reader . Read ( ) ;
402404 }
403- var aggregations = new List < IAggregationResult > ( ) ;
405+ var aggregations = new List < IAggregationItem > ( ) ;
404406 reader . Read ( ) ;
405407
406408 if ( reader . TokenType == JsonToken . StartObject )
407409 {
408410 reader . Read ( ) ;
409- var aggs = new Dictionary < string , IAggregationResult > ( ) ;
411+ var aggs = new Dictionary < string , IAggregationItem > ( ) ;
410412 do
411413 {
412414 var name = reader . Value . ToString ( ) ;
@@ -426,7 +428,7 @@ private IAggregationResult GetBucketAggregation(JsonReader reader, JsonSerialize
426428 if ( reader . TokenType == JsonToken . EndArray )
427429 {
428430 reader . Read ( ) ;
429- bucket . Items = Enumerable . Empty < IAggregationResult > ( ) ;
431+ bucket . Items = Enumerable . Empty < IAggregationItem > ( ) ;
430432 return bucket ;
431433 }
432434 do
@@ -440,7 +442,7 @@ private IAggregationResult GetBucketAggregation(JsonReader reader, JsonSerialize
440442 return bucket ;
441443 }
442444
443- private IAggregationResult GetValueMetricOrAggregation ( JsonReader reader , JsonSerializer serializer )
445+ private IAggregationItem GetValueMetric ( JsonReader reader , JsonSerializer serializer )
444446 {
445447 reader . Read ( ) ;
446448 var valueMetric = new ValueMetric ( )
@@ -491,7 +493,7 @@ private IAggregationResult GetValueMetricOrAggregation(JsonReader reader, JsonSe
491493 return valueMetric ;
492494 }
493495
494- public IAggregationResult GetRangeAggregation ( JsonReader reader , JsonSerializer serializer , string key = null )
496+ public IAggregationItem GetRangeItem ( JsonReader reader , JsonSerializer serializer , string key = null )
495497 {
496498 string fromAsString = null , toAsString = null ;
497499 long ? docCount = null ;
0 commit comments