@Override public InternalAggregation buildAggregation(long owningBucketOrdinal) { if (valuesSource == null) { return buildEmptyAggregation(); } double top = tops.get(owningBucketOrdinal); double bottom = bottoms.get(owningBucketOrdinal); double posLeft = posLefts.get(owningBucketOrdinal); double posRight = posRights.get(owningBucketOrdinal); double negLeft = negLefts.get(owningBucketOrdinal); double negRight = negRights.get(owningBucketOrdinal); return new InternalGeoBounds(name, top, bottom, posLeft, posRight, negLeft, negRight, wrapLongitude, pipelineAggregators(), metaData()); }
@Override public double metric(long owningBucketOrd) { if (valuesSource == null || owningBucketOrd >= maxes.size()) { return Double.NEGATIVE_INFINITY; } return maxes.get(owningBucketOrd); }
@Override public double metric(long owningBucketOrd) { if (valuesSource == null || owningBucketOrd >= sums.size()) { return 0.0; } return sums.get(owningBucketOrd); }
@Override public double metric(long owningBucketOrd) { if (valuesSource == null || owningBucketOrd >= mins.size()) { return Double.POSITIVE_INFINITY; } return mins.get(owningBucketOrd); }
@Override public InternalAggregation buildAggregation(long bucket) { if (valuesSource == null || bucket >= counts.size()) { return buildEmptyAggregation(); } return new InternalExtendedStats(name, counts.get(bucket), sums.get(bucket), mins.get(bucket), maxes.get(bucket), sumOfSqrs.get(bucket), sigma, format, pipelineAggregators(), metaData()); }
@Override public double metric(long owningBucketOrd) { if (valuesSource == null || owningBucketOrd >= sums.size()) { return Double.NaN; } return sums.get(owningBucketOrd) / counts.get(owningBucketOrd); }
@Override public InternalAggregation buildAggregation(long bucket) { if (valuesSource == null || bucket >= sums.size()) { return buildEmptyAggregation(); } return new InternalStats(name, counts.get(bucket), sums.get(bucket), mins.get(bucket), maxes.get(bucket), format, pipelineAggregators(), metaData()); }
@Override Double toComparable(int slot) { if (missingBucket && bits.get(slot) == false) { return null; } assert missingBucket == false || bits.get(slot); return values.get(slot); }
@Override int compareCurrent(int slot) { if (missingBucket) { if (missingCurrentValue) { return bits.get(slot) ? -1 * reverseMul : 0; } else if (bits.get(slot) == false) { return reverseMul; } } return compareValues(currentValue, values.get(slot)); }
/** Resize the array to the exact provided size. */ public DoubleArray resize(DoubleArray array, long size) { if (array instanceof BigDoubleArray) { return resizeInPlace((BigDoubleArray) array, size); } else { AbstractArray arr = (AbstractArray) array; final DoubleArray newArray = newDoubleArray(size, arr.clearOnResize); for (long i = 0, end = Math.min(size, array.size()); i < end; ++i) { newArray.set(i, array.get(i)); } array.close(); return newArray; } }
@Override public InternalAggregation buildAggregation(long bucket) { if (valuesSource == null || bucket >= sums.size()) { return buildEmptyAggregation(); } return new InternalSum(name, sums.get(bucket), format, pipelineAggregators(), metaData()); }
@Override public InternalAggregation buildAggregation(long bucket) { if (valuesSource == null || bucket >= mins.size()) { return buildEmptyAggregation(); } return new InternalMin(name, mins.get(bucket), format, pipelineAggregators(), metaData()); }
@Override public InternalAggregation buildAggregation(long bucket) { if (valuesSource == null || bucket >= maxes.size()) { return buildEmptyAggregation(); } return new InternalMax(name, maxes.get(bucket), formatter, pipelineAggregators(), metaData()); }
@Override public InternalAggregation buildAggregation(long bucket) { if (valuesSource == null || bucket >= sums.size()) { return buildEmptyAggregation(); } return new InternalAvg(name, sums.get(bucket), counts.get(bucket), format, pipelineAggregators(), metaData()); }
@Override public void collect(int doc, long bucket) throws IOException { if (bucket >= maxes.size()) { long from = maxes.size(); maxes = bigArrays.grow(maxes, bucket + 1); maxes.fill(from, maxes.size(), Double.NEGATIVE_INFINITY); } if (values.advanceExact(doc)) { final double value = values.doubleValue(); double max = maxes.get(bucket); max = Math.max(max, value); maxes.set(bucket, max); } }
@Override public void collect(int doc, long bucket) throws IOException { if (bucket >= mins.size()) { long from = mins.size(); mins = bigArrays.grow(mins, bucket + 1); mins.fill(from, mins.size(), Double.POSITIVE_INFINITY); } if (values.advanceExact(doc)) { final double value = values.doubleValue(); double min = mins.get(bucket); min = Math.min(min, value); mins.set(bucket, min); } }