@@ -34,21 +34,22 @@ private IAggregate ReadAggregate(JsonReader reader, JsonSerializer serializer)
34
34
35
35
IAggregate aggregate = null ;
36
36
37
- var property = reader . Value as string ;
38
- if ( _numeric . IsMatch ( property ) )
37
+ var propertyName = ( string ) reader . Value ;
38
+ if ( _numeric . IsMatch ( propertyName ) )
39
39
aggregate = GetPercentilesAggregate ( reader , serializer , oldFormat : true ) ;
40
40
41
- var meta = ( property == "meta" ) ? GetMetadata ( reader ) : null ;
41
+ var meta = propertyName == "meta"
42
+ ? GetMetadata ( reader )
43
+ : null ;
42
44
43
45
if ( aggregate != null )
44
46
{
45
47
aggregate . Meta = meta ;
46
48
return aggregate ;
47
49
}
48
50
49
- property = reader . Value as string ;
50
-
51
- switch ( property )
51
+ propertyName = ( string ) reader . Value ;
52
+ switch ( propertyName )
52
53
{
53
54
case "values" :
54
55
reader . Read ( ) ;
@@ -96,10 +97,8 @@ private IBucket ReadBucket(JsonReader reader, JsonSerializer serializer)
96
97
if ( reader . TokenType != JsonToken . PropertyName )
97
98
return null ;
98
99
99
- IBucket item = null ;
100
-
101
- var property = reader . Value as string ;
102
-
100
+ IBucket item ;
101
+ var property = ( string ) reader . Value ;
103
102
switch ( property )
104
103
{
105
104
case "key" :
@@ -128,7 +127,7 @@ private Dictionary<string, object> GetMetadata(JsonReader reader)
128
127
reader . Read ( ) ;
129
128
while ( reader . TokenType != JsonToken . EndObject )
130
129
{
131
- var key = reader . Value as string ;
130
+ var key = ( string ) reader . Value ;
132
131
reader . Read ( ) ;
133
132
var value = reader . Value ;
134
133
meta . Add ( key , value ) ;
@@ -156,7 +155,7 @@ private IAggregate GetTopHitsAggregate(JsonReader reader, JsonSerializer seriali
156
155
157
156
var total = o [ "total" ] . ToObject < long > ( ) ;
158
157
var maxScore = o [ "max_score" ] . ToObject < double ? > ( ) ;
159
- var hits = o [ "hits" ] . Children ( ) . OfType < JObject > ( ) . Select ( s => s ) ;
158
+ var hits = o [ "hits" ] . Children ( ) . OfType < JObject > ( ) ;
160
159
reader . Read ( ) ;
161
160
return new TopHitsAggregate ( hits , serializer ) { Total = total , MaxScore = maxScore } ;
162
161
}
@@ -203,14 +202,16 @@ private IAggregate GetPercentilesAggregate(JsonReader reader, JsonSerializer ser
203
202
reader . Read ( ) ;
204
203
while ( reader . TokenType != JsonToken . EndObject )
205
204
{
206
- if ( ( reader . Value as string ) . Contains ( "_as_string" ) )
205
+ var propertyName = ( string ) reader . Value ;
206
+ if ( propertyName . Contains ( "_as_string" ) )
207
207
{
208
208
reader . Read ( ) ;
209
209
reader . Read ( ) ;
210
210
}
211
211
if ( reader . TokenType != JsonToken . EndObject )
212
212
{
213
- var percentile = double . Parse ( reader . Value as string , CultureInfo . InvariantCulture ) ;
213
+ var percentileValue = ( string ) reader . Value ;
214
+ var percentile = double . Parse ( percentileValue , CultureInfo . InvariantCulture ) ;
214
215
reader . Read ( ) ;
215
216
var value = reader . Value as double ? ;
216
217
percentileItems . Add ( new PercentileItem ( )
@@ -252,13 +253,13 @@ private IAggregate GetStatsAggregate(JsonReader reader, JsonSerializer serialize
252
253
reader . Read ( ) ;
253
254
var count = ( reader . Value as long ? ) . GetValueOrDefault ( 0 ) ;
254
255
reader . Read ( ) ; reader . Read ( ) ;
255
- var min = ( reader . Value as double ? ) ;
256
+ var min = reader . Value as double ? ;
256
257
reader . Read ( ) ; reader . Read ( ) ;
257
- var max = ( reader . Value as double ? ) ;
258
+ var max = reader . Value as double ? ;
258
259
reader . Read ( ) ; reader . Read ( ) ;
259
- var average = ( reader . Value as double ? ) ;
260
+ var average = reader . Value as double ? ;
260
261
reader . Read ( ) ; reader . Read ( ) ;
261
- var sum = ( reader . Value as double ? ) ;
262
+ var sum = reader . Value as double ? ;
262
263
263
264
var statsMetric = new StatsAggregate ( )
264
265
{
@@ -274,7 +275,8 @@ private IAggregate GetStatsAggregate(JsonReader reader, JsonSerializer serialize
274
275
if ( reader . TokenType == JsonToken . EndObject )
275
276
return statsMetric ;
276
277
277
- while ( reader . TokenType != JsonToken . EndObject && ( reader . Value as string ) . Contains ( "_as_string" ) )
278
+ var propertyName = ( string ) reader . Value ;
279
+ while ( reader . TokenType != JsonToken . EndObject && propertyName . Contains ( "_as_string" ) )
278
280
{
279
281
reader . Read ( ) ;
280
282
reader . Read ( ) ;
@@ -306,18 +308,24 @@ private IAggregate GetExtendedStatsAggregate(StatsAggregate statsMetric, JsonRea
306
308
extendedStatsMetric . StdDeviation = ( reader . Value as double ? ) ;
307
309
reader . Read ( ) ;
308
310
311
+ string propertyName ;
312
+
309
313
if ( reader . TokenType != JsonToken . EndObject )
310
314
{
311
315
var bounds = new StandardDeviationBounds ( ) ;
312
316
reader . Read ( ) ;
313
317
reader . Read ( ) ;
314
- if ( ( reader . Value as string ) == "upper" )
318
+
319
+ propertyName = ( string ) reader . Value ;
320
+ if ( propertyName == "upper" )
315
321
{
316
322
reader . Read ( ) ;
317
323
bounds . Upper = reader . Value as double ? ;
318
324
}
319
325
reader . Read ( ) ;
320
- if ( ( reader . Value as string ) == "lower" )
326
+
327
+ propertyName = ( string ) reader . Value ;
328
+ if ( propertyName == "lower" )
321
329
{
322
330
reader . Read ( ) ;
323
331
bounds . Lower = reader . Value as double ? ;
@@ -326,10 +334,12 @@ private IAggregate GetExtendedStatsAggregate(StatsAggregate statsMetric, JsonRea
326
334
reader . Read ( ) ;
327
335
reader . Read ( ) ;
328
336
}
329
- while ( reader . TokenType != JsonToken . EndObject && ( reader . Value as string ) . Contains ( "_as_string" ) )
337
+
338
+ propertyName = ( string ) reader . Value ;
339
+ while ( reader . TokenType != JsonToken . EndObject && propertyName . Contains ( "_as_string" ) )
330
340
{
331
341
// std_deviation_bounds is an object, so we need to skip its properties
332
- if ( ( reader . Value as string ) . Equals ( "std_deviation_bounds_as_string" ) )
342
+ if ( propertyName . Equals ( "std_deviation_bounds_as_string" ) )
333
343
{
334
344
reader . Read ( ) ;
335
345
reader . Read ( ) ;
@@ -351,7 +361,7 @@ private IReadOnlyDictionary<string, IAggregate> GetSubAggregates(JsonReader read
351
361
var currentDepth = reader . Depth ;
352
362
do
353
363
{
354
- var fieldName = reader . Value as string ;
364
+ var fieldName = ( string ) reader . Value ;
355
365
reader . Read ( ) ;
356
366
var agg = this . ReadAggregate ( reader , serializer ) ;
357
367
nestedAggs . Add ( fieldName , agg ) ;
@@ -365,15 +375,15 @@ private IReadOnlyDictionary<string, IAggregate> GetSubAggregates(JsonReader read
365
375
private IAggregate GetMultiBucketAggregate ( JsonReader reader , JsonSerializer serializer )
366
376
{
367
377
var bucket = new BucketAggregate ( ) ;
368
- var property = reader . Value as string ;
369
- if ( property == "doc_count_error_upper_bound" )
378
+ var propertyName = ( string ) reader . Value ;
379
+ if ( propertyName == "doc_count_error_upper_bound" )
370
380
{
371
381
reader . Read ( ) ;
372
382
bucket . DocCountErrorUpperBound = reader . Value as long ? ;
373
383
reader . Read ( ) ;
374
384
}
375
- property = reader . Value as string ;
376
- if ( property == "sum_other_doc_count" )
385
+ propertyName = ( string ) reader . Value ;
386
+ if ( propertyName == "sum_other_doc_count" )
377
387
{
378
388
reader . Read ( ) ;
379
389
bucket . SumOtherDocCount = reader . Value as long ? ;
@@ -422,9 +432,9 @@ private IAggregate GetMultiBucketAggregate(JsonReader reader, JsonSerializer ser
422
432
private IAggregate GetValueAggregate ( JsonReader reader , JsonSerializer serializer )
423
433
{
424
434
reader . Read ( ) ;
425
- var valueMetric = new ValueAggregate ( )
435
+ var valueMetric = new ValueAggregate
426
436
{
427
- Value = ( reader . Value as double ? )
437
+ Value = reader . Value as double ?
428
438
} ;
429
439
if ( valueMetric . Value == null && reader . ValueType == typeof ( long ) )
430
440
valueMetric . Value = reader . Value as long ? ;
@@ -434,23 +444,38 @@ private IAggregate GetValueAggregate(JsonReader reader, JsonSerializer serialize
434
444
reader . Read ( ) ;
435
445
if ( reader . TokenType != JsonToken . EndObject )
436
446
{
437
- if ( reader . TokenType == JsonToken . PropertyName && ( reader . Value as string ) == "keys" )
447
+ if ( reader . TokenType == JsonToken . PropertyName )
438
448
{
439
- var keyedValueMetric = new KeyedValueAggregate
440
- {
441
- Value = valueMetric . Value
442
- } ;
443
- var keys = new List < string > ( ) ;
444
- reader . Read ( ) ;
445
- reader . Read ( ) ;
446
- while ( reader . TokenType != JsonToken . EndArray )
449
+ var propertyName = ( string ) reader . Value ;
450
+
451
+ if ( propertyName == "value_as_string" )
447
452
{
448
- keys . Add ( reader . Value . ToString ( ) ) ;
453
+ valueMetric . ValueAsString = reader . ReadAsString ( ) ;
449
454
reader . Read ( ) ;
450
455
}
451
- reader . Read ( ) ;
452
- keyedValueMetric . Keys = keys ;
453
- return keyedValueMetric ;
456
+
457
+ if ( reader . TokenType == JsonToken . PropertyName )
458
+ {
459
+ propertyName = ( string ) reader . Value ;
460
+ if ( propertyName == "keys" )
461
+ {
462
+ var keyedValueMetric = new KeyedValueAggregate
463
+ {
464
+ Value = valueMetric . Value
465
+ } ;
466
+ var keys = new List < string > ( ) ;
467
+ reader . Read ( ) ;
468
+ reader . Read ( ) ;
469
+ while ( reader . TokenType != JsonToken . EndArray )
470
+ {
471
+ keys . Add ( reader . Value . ToString ( ) ) ;
472
+ reader . Read ( ) ;
473
+ }
474
+ reader . Read ( ) ;
475
+ keyedValueMetric . Keys = keys ;
476
+ return keyedValueMetric ;
477
+ }
478
+ }
454
479
}
455
480
else
456
481
{
@@ -533,14 +558,22 @@ public IBucket GetRangeBucket(JsonReader reader, JsonSerializer serializer, stri
533
558
private IBucket GetDateHistogramBucket ( JsonReader reader , JsonSerializer serializer )
534
559
{
535
560
var keyAsString = reader . ReadAsString ( ) ;
536
- reader . Read ( ) ; reader . Read ( ) ;
561
+ reader . Read ( ) ;
562
+ reader . Read ( ) ;
537
563
var key = ( reader . Value as long ? ) . GetValueOrDefault ( 0 ) ;
538
- reader . Read ( ) ; reader . Read ( ) ;
564
+ reader . Read ( ) ;
565
+ reader . Read ( ) ;
539
566
var docCount = ( reader . Value as long ? ) . GetValueOrDefault ( 0 ) ;
540
567
reader . Read ( ) ;
541
568
542
- var dateHistogram = new DateHistogramBucket ( ) { Key = key , KeyAsString = keyAsString , DocCount = docCount } ;
543
- dateHistogram . Aggregations = this . GetSubAggregates ( reader , serializer ) ;
569
+ var dateHistogram = new DateHistogramBucket
570
+ {
571
+ Key = key ,
572
+ KeyAsString = keyAsString ,
573
+ DocCount = docCount ,
574
+ Aggregations = this . GetSubAggregates ( reader , serializer )
575
+ } ;
576
+
544
577
return dateHistogram ;
545
578
546
579
}
@@ -550,13 +583,13 @@ private IBucket GetKeyedBucket(JsonReader reader, JsonSerializer serializer)
550
583
reader . Read ( ) ;
551
584
var key = reader . Value ;
552
585
reader . Read ( ) ;
553
- var property = reader . Value as string ;
554
- if ( property == "from" || property == "to" )
586
+ var propertyName = ( string ) reader . Value ;
587
+ if ( propertyName == "from" || propertyName == "to" )
555
588
return GetRangeBucket ( reader , serializer , key as string ) ;
556
589
557
590
var bucket = new KeyedBucket < object > { Key = key } ;
558
591
559
- if ( property == "key_as_string" )
592
+ if ( propertyName == "key_as_string" )
560
593
{
561
594
bucket . KeyAsString = reader . ReadAsString ( ) ;
562
595
reader . Read ( ) ;
@@ -567,7 +600,7 @@ private IBucket GetKeyedBucket(JsonReader reader, JsonSerializer serializer)
567
600
bucket . DocCount = docCount . GetValueOrDefault ( 0 ) ;
568
601
reader . Read ( ) ;
569
602
570
- var nextProperty = reader . Value as string ;
603
+ var nextProperty = ( string ) reader . Value ;
571
604
if ( nextProperty == "score" )
572
605
return GetSignificantTermsBucket ( reader , serializer , bucket ) ;
573
606
0 commit comments