protected DoubleHistogram getState(long bucketOrd) { if (bucketOrd >= states.size()) { return null; } final DoubleHistogram state = states.get(bucketOrd); return state; }
protected TDigestState getState(long bucketOrd) { if (bucketOrd >= states.size()) { return null; } final TDigestState state = states.get(bucketOrd); return state; }
private boolean hasDataForBucket(long bucketOrd) { return bucketOrd < valueSketches.size() && valueSketches.get(bucketOrd) != null; }
/** Grow an array to a size that is larger than <code>minSize</code>, * preserving content, and potentially reusing part of the provided array. */ public <T> ObjectArray<T> grow(ObjectArray<T> array, long minSize) { if (minSize <= array.size()) { return array; } final long newSize = overSize(minSize, PageCacheRecycler.OBJECT_PAGE_SIZE, RamUsageEstimator.NUM_BYTES_OBJECT_REF); return resize(array, newSize); } }
@Override public void preCollection() throws IOException { for (long i = 0; i < aggregators.size(); ++i) { final Aggregator aggregator = aggregators.get(i); if (aggregator != null) { aggregator.preCollection(); } } }
@Override public void postCollection() throws IOException { for (long i = 0; i < aggregators.size(); ++i) { final Aggregator aggregator = aggregators.get(i); if (aggregator != null) { aggregator.postCollection(); } } }
public void setScorer(Scorer scorer) throws IOException { this.currentScorer = scorer; for (int i = 0; i < perBucketSamples.size(); i++) { PerParentBucketSamples perBucketSample = perBucketSamples.get(i); if (perBucketSample == null) { continue; } perBucketSample.setScorer(scorer); } }
@Override public LeafBucketCollector getLeafCollector(final LeafReaderContext ctx) { for (long i = 0; i < collectors.size(); ++i) { collectors.set(i, null);
PerSegmentCollects(LeafReaderContext readerContext) throws IOException { // The publisher behaviour for Reader/Scorer listeners triggers a // call to this constructor with a null scorer so we can't call // scorer.getWeight() and pass the Weight to our base class. // However, passing null seems to have no adverse effects here... super(null); this.readerContext = readerContext; for (int i = 0; i < perBucketSamples.size(); i++) { PerParentBucketSamples perBucketSample = perBucketSamples.get(i); if (perBucketSample == null) { continue; } perBucketSample.changeSegment(readerContext); } }
@Override public InternalAggregation buildAggregation(long bucket) throws IOException { if (bucket < aggregators.size()) { Aggregator aggregator = aggregators.get(bucket); if (aggregator != null) { return aggregator.buildAggregation(0); } } return buildEmptyAggregation(); }
private void runDeferredAggs() throws IOException { List<ScoreDoc> allDocs = new ArrayList<>(shardSize); for (int i = 0; i < perBucketSamples.size(); i++) { PerParentBucketSamples perBucketSample = perBucketSamples.get(i); if (perBucketSample == null) { continue; } perBucketSample.getMatches(allDocs); } // Sort the top matches by docID for the benefit of deferred collector ScoreDoc[] docsArr = allDocs.toArray(new ScoreDoc[allDocs.size()]); Arrays.sort(docsArr, (o1, o2) -> { if(o1.doc == o2.doc){ return o1.shardIndex - o2.shardIndex; } return o1.doc - o2.doc; }); try { for (PerSegmentCollects perSegDocs : entries) { perSegDocs.replayRelatedMatches(docsArr); } } catch (IOException e) { throw new ElasticsearchException("IOException collecting best scoring results", e); } deferred.postCollection(); }
/** Resize the array to the exact provided size. */ public <T> ObjectArray<T> resize(ObjectArray<T> array, long size) { if (array instanceof BigObjectArray) { return resizeInPlace((BigObjectArray<T>) array, size); } else { final ObjectArray<T> newArray = newObjectArray(size); 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 void postCollect() throws IOException { final FixedBitSet allVisitedOrds = new FixedBitSet(maxOrd); for (long bucket = visitedOrds.size() - 1; bucket >= 0; --bucket) { final FixedBitSet bits = visitedOrds.get(bucket); if (bits != null) { allVisitedOrds.or(bits); } } final org.elasticsearch.common.hash.MurmurHash3.Hash128 hash = new org.elasticsearch.common.hash.MurmurHash3.Hash128(); try (LongArray hashes = bigArrays.newLongArray(maxOrd, false)) { for (int ord = allVisitedOrds.nextSetBit(0); ord < DocIdSetIterator.NO_MORE_DOCS; ord = ord + 1 < maxOrd ? allVisitedOrds.nextSetBit(ord + 1) : DocIdSetIterator.NO_MORE_DOCS) { final BytesRef value = values.lookupOrd(ord); org.elasticsearch.common.hash.MurmurHash3.hash128(value.bytes, value.offset, value.length, 0, hash); hashes.set(ord, hash.h1); } for (long bucket = visitedOrds.size() - 1; bucket >= 0; --bucket) { final FixedBitSet bits = visitedOrds.get(bucket); if (bits != null) { for (int ord = bits.nextSetBit(0); ord < DocIdSetIterator.NO_MORE_DOCS; ord = ord + 1 < maxOrd ? bits.nextSetBit(ord + 1) : DocIdSetIterator.NO_MORE_DOCS) { counts.collect(bucket, hashes.get(ord)); } } } } }
protected TDigestState getState(long bucketOrd) { if (bucketOrd >= states.size()) { return null; } final TDigestState state = states.get(bucketOrd); return state; }
protected TDigestState getState(long bucketOrd) { if (bucketOrd >= states.size()) { return null; } final TDigestState state = states.get(bucketOrd); return state; }
protected DoubleHistogram getState(long bucketOrd) { if (bucketOrd >= states.size()) { return null; } final DoubleHistogram state = states.get(bucketOrd); return state; }
public void setScorer(Scorer scorer) throws IOException { this.currentScorer = scorer; for (int i = 0; i < perBucketSamples.size(); i++) { PerParentBucketSamples perBucketSample = perBucketSamples.get(i); if (perBucketSample == null) { continue; } perBucketSample.setScorer(scorer); } }
/** Grow an array to a size that is larger than <code>minSize</code>, preserving content, and potentially reusing part of the provided array. */ public <T> ObjectArray<T> grow(ObjectArray<T> array, long minSize) { if (minSize <= array.size()) { return array; } final long newSize = overSize(minSize, OBJECT_PAGE_SIZE, RamUsageEstimator.NUM_BYTES_OBJECT_REF); return resize(array, newSize); } }
@Override public InternalAggregation buildAggregation(long bucket) throws IOException { if (bucket < aggregators.size()) { Aggregator aggregator = aggregators.get(bucket); if (aggregator != null) { return aggregator.buildAggregation(0); } } return buildEmptyAggregation(); }