@@ -140,7 +140,7 @@ public List<Statistics> getStatistics(
140140 @ SuppressWarnings ("unchecked" )
141141 List <Map <String , ?>> values = JsonPath .parse (body ).read (searchResultPath , List .class );
142142
143- Map <String , Value > converted = convertToValueMap (requestSeries , values ).get ("row-leaf" );
143+ Map <String , Value > converted = convertToValueMap (requestSeries , values ).get ("row-leaf" ). get ( StringUtils . EMPTY ) ;
144144
145145 return converted .values ().stream ()
146146 .map (Value ::getStatistics )
@@ -211,26 +211,32 @@ public Terms getTerms(
211211 @ SuppressWarnings ("unchecked" )
212212 List <Map <String , ?>> values = (List <Map <String , ?>>) result .get ("values" );
213213
214- Map <String , Map <String , Value >> valueMap = convertToValueMap (requestSeries , values );
214+ Map <String , Map <String , Map < String , Value > >> valueMap = convertToValueMap (requestSeries , values );
215215
216- List <Statistics > statsList = valueMap .get ("row-leaf" ).values ().stream ()
216+ List <Statistics > statsList = valueMap .get ("row-leaf" ).get ( StringUtils . EMPTY ). values ().stream ()
217217 .map (Value ::getStatistics )
218218 .collect (Collectors .toList ());
219219
220- List <Value > addCol = valueMap .get ("col-leaf" ).values ().stream ()
221- .map (
222- value -> Value .builder ()
223- .labels (value .getLabels ())
224- .statistics (value .getStatistics ())
220+ List <Terms .StackedColumn > stackedColumns = new ArrayList <>();
221+
222+ for (Map <String , Value > colLeaf : valueMap .get ("col-leaf" ).values ()) {
223+ stackedColumns .add (
224+ Terms .StackedColumn .builder ()
225+ .columnLabels (colLeaf .get (colLeaf .keySet ().iterator ().next ()).getLabels ())
226+ .statisticsList (
227+ colLeaf .values ().stream ()
228+ .map (Value ::getStatistics )
229+ .collect (Collectors .toList ())
230+ )
225231 .build ()
226- )
227- . collect ( Collectors . toList ());
232+ );
233+ }
228234
229235 termsDataList .add (
230236 Terms .TermsData .builder ()
231237 .baseLabels (labels )
232238 .statisticsList (statsList )
233- .stackedColumns (addCol )
239+ .stackedColumns (stackedColumns )
234240 .build ()
235241 );
236242 }
@@ -308,28 +314,34 @@ public Histogram getHistogram(
308314 @ SuppressWarnings ("unchecked" )
309315 List <Map <String , ?>> values = (List <Map <String , ?>>) result .get ("values" );
310316
311- String timestamp = CollectionUtils .isEmpty (labels ) ? "" : labels .get (0 );
317+ String timestamp = CollectionUtils .isEmpty (labels ) ? StringUtils . EMPTY : labels .get (0 );
312318
313- Map <String , Map <String , Value >> valueMap = convertToValueMap (requestSeries , values );
319+ Map <String , Map <String , Map < String , Value > >> valueMap = convertToValueMap (requestSeries , values );
314320
315- List <Statistics > statsList = valueMap .get ("row-leaf" ).values ().stream ()
321+ List <Statistics > statsList = valueMap .get ("row-leaf" ).get ( StringUtils . EMPTY ). values ().stream ()
316322 .map (Value ::getStatistics )
317323 .collect (Collectors .toList ());
318324
319- List <Value > addCol = valueMap .get ("col-leaf" ).values ().stream ()
320- .map (
321- value -> Value .builder ()
322- .labels (value .getLabels ())
323- .statistics (value .getStatistics ())
325+ List <Histogram .StackedColumn > stackedColumns = new ArrayList <>();
326+
327+ for (Map <String , Value > colLeaf : valueMap .get ("col-leaf" ).values ()) {
328+ stackedColumns .add (
329+ Histogram .StackedColumn .builder ()
330+ .columnLabels (colLeaf .get (colLeaf .keySet ().iterator ().next ()).getLabels ())
331+ .statisticsList (
332+ colLeaf .values ().stream ()
333+ .map (Value ::getStatistics )
334+ .collect (Collectors .toList ())
335+ )
324336 .build ()
325- )
326- . collect ( Collectors . toList ());
337+ );
338+ }
327339
328340 histogramDataList .add (
329341 Histogram .HistogramData .builder ()
330342 .baseLabel (timestamp )
331343 .statisticsList (statsList )
332- .stackedColumns (addCol )
344+ .stackedColumns (stackedColumns )
333345 .build ()
334346 );
335347 }
@@ -363,7 +375,7 @@ public String syncSearch(SearchSpec searchSpec) throws IOException {
363375 * @return Value map
364376 * @since 2.0.0
365377 */
366- private Map <String , Map <String , Value >> convertToValueMap (
378+ private Map <String , Map <String , Map < String , Value > >> convertToValueMap (
367379 List <Map <String , ?>> requestSeries ,
368380 List <Map <String , ?>> values
369381 ) {
@@ -380,7 +392,7 @@ private Map<String, Map<String, Value>> convertToValueMap(
380392 )
381393 );
382394
383- Map <String , Map <String , Value >> leafFieldValueMap = ImmutableMap .of (
395+ Map <String , Map <String , Map < String , Value > >> leafFieldValueMap = ImmutableMap .of (
384396 "row-leaf" , new HashMap <>(),
385397 "col-leaf" , new HashMap <>()
386398 );
@@ -396,7 +408,8 @@ private Map<String, Map<String, Value>> convertToValueMap(
396408 List <String > keys = (List <String >) valueMap .get ("key" );
397409
398410 List <String > columnLabels = new ArrayList <>();
399- String id = "" ;
411+ StringBuilder keyName = new StringBuilder ();
412+ String id = StringUtils .EMPTY ;
400413
401414 for (String key : keys ) {
402415 if (keyMap .containsKey (key )) {
@@ -405,48 +418,55 @@ private Map<String, Map<String, Value>> convertToValueMap(
405418 }
406419
407420 columnLabels .add (key );
421+ keyName .append (key );
408422 }
409423
410424 String field = keyMap .get (id ).get ("field" );
411425 String type = keyMap .get (id ).get ("type" );
412426 String percentile = keyMap .get (id ).get ("percentile" );
413427
414- if (!leafFieldValueMap .get (source ).containsKey (field )) {
415- leafFieldValueMap .get (source ).put (field , new Value ());
416- leafFieldValueMap .get (source ).get (field ).setLabels (columnLabels );
417- leafFieldValueMap .get (source ).get (field ).setStatistics (new Statistics ());
418- leafFieldValueMap .get (source ).get (field ).getStatistics ().setField (field );
428+ if (!leafFieldValueMap .get (source ).containsKey (keyName .toString ())) {
429+ leafFieldValueMap .get (source ).put (keyName .toString (), new HashMap <>());
430+ }
431+
432+ if (!leafFieldValueMap .get (source ).get (keyName .toString ()).containsKey (field )) {
433+ leafFieldValueMap .get (source ).get (keyName .toString ()).put (field , new Value ());
434+ leafFieldValueMap .get (source ).get (keyName .toString ()).get (field ).setLabels (columnLabels );
435+ leafFieldValueMap .get (source ).get (keyName .toString ()).get (field ).setStatistics (new Statistics ());
436+ leafFieldValueMap .get (source ).get (keyName .toString ()).get (field ).getStatistics ().setField (field );
419437 }
420438
439+ Statistics statistics = leafFieldValueMap .get (source ).get (keyName .toString ()).get (field ).getStatistics ();
440+
421441 if (type .equals (SeriesType .avg .toString ())) {
422- leafFieldValueMap . get ( source ). get ( field ). getStatistics () .setAverage ((Double ) valueMap .get ("value" ));
442+ statistics .setAverage ((Double ) valueMap .get ("value" ));
423443 } else if (type .equals (SeriesType .card .toString ())) {
424- leafFieldValueMap . get ( source ). get ( field ). getStatistics () .setCardinality ((Integer ) valueMap .get ("value" ));
444+ statistics .setCardinality ((Integer ) valueMap .get ("value" ));
425445 } else if (type .equals (SeriesType .count .toString ())) {
426- leafFieldValueMap . get ( source ). get ( field ). getStatistics () .setCount ((Integer ) valueMap .get ("value" ));
446+ statistics .setCount ((Integer ) valueMap .get ("value" ));
427447 } else if (type .equals (SeriesType .max .toString ())) {
428- leafFieldValueMap . get ( source ). get ( field ). getStatistics () .setMax ((Double ) valueMap .get ("value" ));
448+ statistics .setMax ((Double ) valueMap .get ("value" ));
429449 } else if (type .equals (SeriesType .min .toString ())) {
430- leafFieldValueMap . get ( source ). get ( field ). getStatistics () .setMin ((Double ) valueMap .get ("value" ));
450+ statistics .setMin ((Double ) valueMap .get ("value" ));
431451 } else if (type .equals (SeriesType .stddev .toString ())) {
432- leafFieldValueMap . get ( source ). get ( field ). getStatistics () .setStdDeviation ((Double ) valueMap .get ("value" ));
452+ statistics .setStdDeviation ((Double ) valueMap .get ("value" ));
433453 } else if (type .equals (SeriesType .sum .toString ())) {
434- leafFieldValueMap . get ( source ). get ( field ). getStatistics () .setSum ((Double ) valueMap .get ("value" ));
454+ statistics .setSum ((Double ) valueMap .get ("value" ));
435455 } else if (type .equals (SeriesType .sumofsquares .toString ())) {
436- leafFieldValueMap . get ( source ). get ( field ). getStatistics () .setSum ((Double ) valueMap .get ("value" ));
456+ statistics .setSum ((Double ) valueMap .get ("value" ));
437457 } else if (type .equals (SeriesType .variance .toString ())) {
438- leafFieldValueMap . get ( source ). get ( field ). getStatistics () .setSum ((Double ) valueMap .get ("value" ));
458+ statistics .setSum ((Double ) valueMap .get ("value" ));
439459 } else if (type .equals (SeriesType .percentile .toString ())) {
440- if (leafFieldValueMap . get ( source ). get ( field ). getStatistics () .getPercentiles () == null ) {
441- leafFieldValueMap . get ( source ). get ( field ). getStatistics () .setPercentiles (new ArrayList <>());
460+ if (statistics .getPercentiles () == null ) {
461+ statistics .setPercentiles (new ArrayList <>());
442462 }
443463
444- if (leafFieldValueMap . get ( source ). get ( field ). getStatistics () .getPercentileRanks () == null ) {
445- leafFieldValueMap . get ( source ). get ( field ). getStatistics () .setPercentileRanks (new ArrayList <>());
464+ if (statistics .getPercentileRanks () == null ) {
465+ statistics .setPercentileRanks (new ArrayList <>());
446466 }
447467
448- leafFieldValueMap . get ( source ). get ( field ). getStatistics () .getPercentiles ().add ((Double ) valueMap .get ("value" ));
449- leafFieldValueMap . get ( source ). get ( field ). getStatistics () .getPercentileRanks ().add (percentile );
468+ statistics .getPercentiles ().add ((Double ) valueMap .get ("value" ));
469+ statistics .getPercentileRanks ().add (percentile );
450470 }
451471 }
452472
0 commit comments