private static PercentilesResult reducePercentilesResults(ElasticsearchSearchQueryBase query, List<Aggregation> aggs) { List<Percentile> results = new ArrayList<>(); if (aggs.size() != 1) { throw new VertexiumException("Unexpected number of aggregations. Expected 1 but found: " + aggs.size()); } Aggregation agg = aggs.get(0); if (agg instanceof Percentiles) { Percentiles percentiles = (Percentiles) agg; StreamUtils.stream(percentiles) .filter(percentile -> !Double.isNaN(percentile.getValue())) .forEach(percentile -> results.add(new Percentile(percentile.getPercent(), percentile.getValue()))); } else { throw new VertexiumException("Aggregation is not a percentile: " + agg.getClass().getName()); } return new PercentilesResult(results); }
List<Percentile> percentiles = IterableUtils.toList(percentilesResult.getPercentiles()); percentiles.sort(Comparator.comparing(Percentile::getPercentile)); assertEquals(7, percentiles.size()); percentiles = IterableUtils.toList(percentilesResult.getPercentiles()); percentiles.sort(Comparator.comparing(Percentile::getPercentile)); assertEquals(2, percentiles.size()); percentiles = IterableUtils.toList(percentilesResult.getPercentiles()); assertEquals(0, percentiles.size()); percentiles = IterableUtils.toList(percentilesResult.getPercentiles()); percentiles.sort(Comparator.comparing(Percentile::getPercentile)); assertEquals(7, percentiles.size());
List<Percentile> percentiles = IterableUtils.toList(percentilesResult.getPercentiles()); percentiles.sort(Comparator.comparing(Percentile::getPercentile)); assertEquals(7, percentiles.size()); percentiles = IterableUtils.toList(percentilesResult.getPercentiles()); percentiles.sort(Comparator.comparing(Percentile::getPercentile)); assertEquals(2, percentiles.size()); percentiles = IterableUtils.toList(percentilesResult.getPercentiles()); assertEquals(0, percentiles.size()); percentiles = IterableUtils.toList(percentilesResult.getPercentiles()); percentiles.sort(Comparator.comparing(Percentile::getPercentile)); assertEquals(7, percentiles.size());
public static <TResult extends AggregationResult> TResult createEmptyResult(Class<? extends TResult> resultType) { if (resultType.equals(TermsResult.class)) { return resultType.cast(new TermsResult(new ArrayList<>())); } if (resultType.equals(StatisticsResult.class)) { return resultType.cast(new StatisticsResult(0, 0.0, 0.0, 0.0, 0.0)); } if (resultType.equals(HistogramResult.class)) { return resultType.cast(new HistogramResult(new ArrayList<>())); } if (resultType.equals(RangeResult.class)) { return resultType.cast(new RangeResult(new ArrayList<>())); } if (resultType.equals(PercentilesResult.class)) { return resultType.cast(new PercentilesResult(new ArrayList<>())); } if (resultType.equals(GeohashResult.class)) { return resultType.cast(new GeohashResult(new ArrayList<>())); } if (resultType.equals(CardinalityResult.class)) { return resultType.cast(new CardinalityResult(0)); } throw new VertexiumException("Unhandled type to create empty results for: " + resultType.getName()); } }
private static PercentilesResult reducePercentilesResults(ElasticSearchSingleDocumentSearchQueryBase query, List<Aggregation> aggs) { List<Percentile> results = new ArrayList<>(); if (aggs.size() != 1) { throw new VertexiumException("Unexpected number of aggregations. Expected 1 but found: " + aggs.size()); } Aggregation agg = aggs.get(0); if (agg instanceof Percentiles) { Percentiles percentiles = (Percentiles) agg; StreamUtils.stream(percentiles) .filter(percentile -> !Double.isNaN(percentile.getValue())) .forEach(percentile -> results.add(new Percentile(percentile.getPercent(), percentile.getValue()))); } else { throw new VertexiumException("Aggregation is not a percentile: " + agg.getClass().getName()); } return new PercentilesResult(results); }
public static <TResult extends AggregationResult> TResult createEmptyResult(Class<? extends TResult> resultType) { if (resultType.equals(TermsResult.class)) { return resultType.cast(new TermsResult(new ArrayList<>())); } if (resultType.equals(StatisticsResult.class)) { return resultType.cast(new StatisticsResult(0, 0.0, 0.0, 0.0, 0.0)); } if (resultType.equals(HistogramResult.class)) { return resultType.cast(new HistogramResult(new ArrayList<>())); } if (resultType.equals(RangeResult.class)) { return resultType.cast(new RangeResult(new ArrayList<>())); } if (resultType.equals(PercentilesResult.class)) { return resultType.cast(new PercentilesResult(new ArrayList<>())); } if (resultType.equals(GeohashResult.class)) { return resultType.cast(new GeohashResult(new ArrayList<>())); } if (resultType.equals(CardinalityResult.class)) { return resultType.cast(new CardinalityResult(0)); } throw new VertexiumException("Unhandled type to create empty results for: " + resultType.getName()); } }
private static PercentilesResult reducePercentilesResults(ElasticsearchSearchQueryBase query, List<Aggregation> aggs) { List<Percentile> results = new ArrayList<>(); if (aggs.size() != 1) { throw new VertexiumException("Unexpected number of aggregations. Expected 1 but found: " + aggs.size()); } Aggregation agg = aggs.get(0); if (agg instanceof Percentiles) { Percentiles percentiles = (Percentiles) agg; StreamUtils.stream(percentiles) .filter(percentile -> !Double.isNaN(percentile.getValue())) .forEach(percentile -> results.add(new Percentile(percentile.getPercent(), percentile.getValue()))); } else { throw new VertexiumException("Aggregation is not a percentile: " + agg.getClass().getName()); } return new PercentilesResult(results); }
private static PercentilesResult reducePercentilesResults(ElasticsearchSearchQueryBase query, List<Aggregation> aggs) { List<Percentile> results = new ArrayList<>(); if (aggs.size() != 1) { throw new VertexiumException("Unexpected number of aggregations. Expected 1 but found: " + aggs.size()); } Aggregation agg = aggs.get(0); if (agg instanceof Percentiles) { Percentiles percentiles = (Percentiles) agg; StreamUtils.stream(percentiles) .filter(percentile -> !Double.isNaN(percentile.getValue())) .forEach(percentile -> results.add(new Percentile(percentile.getPercent(), percentile.getValue()))); } else { throw new VertexiumException("Aggregation is not a percentile: " + agg.getClass().getName()); } return new PercentilesResult(results); }