private Collector pickCollector(LeafReaderContext ctx) throws IOException { if (valuesSource == null) { return new EmptyCollector(); } if (valuesSource instanceof ValuesSource.Numeric) { ValuesSource.Numeric source = (ValuesSource.Numeric) valuesSource; MurmurHash3Values hashValues = source.isFloatingPoint() ? MurmurHash3Values.hash(source.doubleValues(ctx)) : MurmurHash3Values.hash(source.longValues(ctx)); return new DirectCollector(counts, hashValues); } if (valuesSource instanceof ValuesSource.Bytes.WithOrdinals) { ValuesSource.Bytes.WithOrdinals source = (ValuesSource.Bytes.WithOrdinals) valuesSource; final RandomAccessOrds ordinalValues = source.ordinalsValues(ctx); final long maxOrd = ordinalValues.getValueCount(); if (maxOrd == 0) { return new EmptyCollector(); } final long ordinalsMemoryUsage = OrdinalsCollector.memoryOverhead(maxOrd); final long countsMemoryUsage = HyperLogLogPlusPlus.memoryUsage(precision); // only use ordinals if they don't increase memory usage by more than 25% if (ordinalsMemoryUsage < countsMemoryUsage / 4) { return new OrdinalsCollector(counts, ordinalValues, context.bigArrays()); } } return new DirectCollector(counts, MurmurHash3Values.hash(valuesSource.bytesValues(ctx))); }
@Override protected LeafBucketCollector getLeafCollector(LeafReaderContext ctx, LeafBucketCollector sub) throws IOException { if (valuesSource == null) { return LeafBucketCollector.NO_OP_COLLECTOR; } if (valuesSource instanceof ValuesSource.Bytes.WithOrdinals) { SortedSetDocValues values = ((ValuesSource.Bytes.WithOrdinals) valuesSource).ordinalsValues(ctx); return new SortedSetRangeLeafCollector(values, ranges, sub) { @Override protected void doCollect(LeafBucketCollector sub, int doc, long bucket) throws IOException { collectBucket(sub, doc, bucket); } }; } else { SortedBinaryDocValues values = valuesSource.bytesValues(ctx); return new SortedBinaryRangeLeafCollector(values, ranges, sub) { @Override protected void doCollect(LeafBucketCollector sub, int doc, long bucket) throws IOException { collectBucket(sub, doc, bucket); } }; } }
private Collector pickCollector(LeafReaderContext ctx) throws IOException { if (valuesSource == null) { return new EmptyCollector(); } if (valuesSource instanceof ValuesSource.Numeric) { ValuesSource.Numeric source = (ValuesSource.Numeric) valuesSource; MurmurHash3Values hashValues = source.isFloatingPoint() ? MurmurHash3Values.hash(source.doubleValues(ctx)) : MurmurHash3Values.hash(source.longValues(ctx)); return new DirectCollector(counts, hashValues); } if (valuesSource instanceof ValuesSource.Bytes.WithOrdinals) { ValuesSource.Bytes.WithOrdinals source = (ValuesSource.Bytes.WithOrdinals) valuesSource; final RandomAccessOrds ordinalValues = source.ordinalsValues(ctx); final long maxOrd = ordinalValues.getValueCount(); if (maxOrd == 0) { return new EmptyCollector(); } final long ordinalsMemoryUsage = OrdinalsCollector.memoryOverhead(maxOrd); final long countsMemoryUsage = HyperLogLogPlusPlus.memoryUsage(precision); // only use ordinals if they don't increase memory usage by more than 25% if (ordinalsMemoryUsage < countsMemoryUsage / 4) { return new OrdinalsCollector(counts, ordinalValues, context.bigArrays()); } } return new DirectCollector(counts, MurmurHash3Values.hash(valuesSource.bytesValues(ctx))); }
@Override public Bits docsWithValue(LeafReaderContext context) { final RandomAccessOrds ordinals = ordinalsValues(context); if (DocValues.unwrapSingleton(ordinals) != null) { return DocValues.docsWithValue(DocValues.unwrapSingleton(ordinals), context.reader().maxDoc()); } else { return DocValues.docsWithValue(ordinals, context.reader().maxDoc()); } }
@Override public LongUnaryOperator globalOrdinalsMapping(LeafReaderContext context) throws IOException { return getGlobalMapping(valuesSource.ordinalsValues(context), valuesSource.globalOrdinalsValues(context), valuesSource.globalOrdinalsMapping(context), missing); } };
@Override public DocValueBits docsWithValue(LeafReaderContext context) throws IOException { final SortedSetDocValues ordinals = ordinalsValues(context); return org.elasticsearch.index.fielddata.FieldData.docsWithValue(ordinals); }
@Override public SortedSetDocValues ordinalsValues(LeafReaderContext context) throws IOException { SortedSetDocValues values = valuesSource.ordinalsValues(context); return replaceMissing(values, missing); }
@Override public LongUnaryOperator globalOrdinalsMapping(LeafReaderContext context) throws IOException { return getGlobalMapping(valuesSource.ordinalsValues(context), valuesSource.globalOrdinalsValues(context), valuesSource.globalOrdinalsMapping(context), missing); } };
@Override public RandomAccessOrds ordinalsValues(LeafReaderContext context) { RandomAccessOrds values = valuesSource.ordinalsValues(context); return replaceMissing(values, missing); }
@Override public LeafBucketCollector getLeafCollector(LeafReaderContext ctx, final LeafBucketCollector sub) throws IOException { if (segmentOrds != null) { mapSegmentCountsToGlobalCounts(); } globalOrds = valuesSource.globalOrdinalsValues(ctx); segmentOrds = valuesSource.ordinalsValues(ctx); return newCollector(segmentOrds, sub); }
@Override public DocValueBits docsWithValue(LeafReaderContext context) throws IOException { final SortedSetDocValues ordinals = ordinalsValues(context); return org.elasticsearch.index.fielddata.FieldData.docsWithValue(ordinals); }
@Override public RandomAccessOrds ordinalsValues(LeafReaderContext context) { RandomAccessOrds values = valuesSource.ordinalsValues(context); return replaceMissing(values, missing); }
@Override public SortedSetDocValues ordinalsValues(LeafReaderContext context) throws IOException { SortedSetDocValues values = valuesSource.ordinalsValues(context); return replaceMissing(values, missing); }
@Override public Bits docsWithValue(LeafReaderContext context) { final RandomAccessOrds ordinals = ordinalsValues(context); if (DocValues.unwrapSingleton(ordinals) != null) { return DocValues.docsWithValue(DocValues.unwrapSingleton(ordinals), context.reader().maxDoc()); } else { return DocValues.docsWithValue(ordinals, context.reader().maxDoc()); } }
mapSegmentCountsToGlobalCounts(mapping); final SortedSetDocValues segmentOrds = valuesSource.ordinalsValues(ctx); segmentDocCounts = context.bigArrays().grow(segmentDocCounts, 1 + segmentOrds.getValueCount()); assert sub == LeafBucketCollector.NO_OP_COLLECTOR;
private Collector pickCollector(LeafReaderContext ctx) throws IOException { if (valuesSource == null) { return new EmptyCollector(); } if (valuesSource instanceof ValuesSource.Numeric) { ValuesSource.Numeric source = (ValuesSource.Numeric) valuesSource; MurmurHash3Values hashValues = source.isFloatingPoint() ? MurmurHash3Values.hash(source.doubleValues(ctx)) : MurmurHash3Values.hash(source.longValues(ctx)); return new DirectCollector(counts, hashValues); } if (valuesSource instanceof ValuesSource.Bytes.WithOrdinals) { ValuesSource.Bytes.WithOrdinals source = (ValuesSource.Bytes.WithOrdinals) valuesSource; final SortedSetDocValues ordinalValues = source.ordinalsValues(ctx); final long maxOrd = ordinalValues.getValueCount(); if (maxOrd == 0) { return new EmptyCollector(); } final long ordinalsMemoryUsage = OrdinalsCollector.memoryOverhead(maxOrd); final long countsMemoryUsage = HyperLogLogPlusPlus.memoryUsage(precision); // only use ordinals if they don't increase memory usage by more than 25% if (ordinalsMemoryUsage < countsMemoryUsage / 4) { return new OrdinalsCollector(counts, ordinalValues, context.bigArrays()); } } return new DirectCollector(counts, MurmurHash3Values.hash(valuesSource.bytesValues(ctx))); }
@Override protected LeafBucketCollector getLeafCollector(LeafReaderContext ctx, LeafBucketCollector sub) throws IOException { if (valuesSource == null) { return LeafBucketCollector.NO_OP_COLLECTOR; } if (valuesSource instanceof ValuesSource.Bytes.WithOrdinals) { SortedSetDocValues values = ((ValuesSource.Bytes.WithOrdinals) valuesSource).ordinalsValues(ctx); return new SortedSetRangeLeafCollector(values, ranges, sub) { @Override protected void doCollect(LeafBucketCollector sub, int doc, long bucket) throws IOException { collectBucket(sub, doc, bucket); } }; } else { SortedBinaryDocValues values = valuesSource.bytesValues(ctx); return new SortedBinaryRangeLeafCollector(values, ranges, sub) { @Override protected void doCollect(LeafBucketCollector sub, int doc, long bucket) throws IOException { collectBucket(sub, doc, bucket); } }; } }
@Override public LongUnaryOperator globalOrdinalsMapping(LeafReaderContext context) throws IOException { return getGlobalMapping(valuesSource.ordinalsValues(context), valuesSource.globalOrdinalsValues(context), valuesSource.globalOrdinalsMapping(context), missing); } };
@Override public SortedSetDocValues ordinalsValues(LeafReaderContext context) throws IOException { SortedSetDocValues values = valuesSource.ordinalsValues(context); return replaceMissing(values, missing); }
@Override public DocValueBits docsWithValue(LeafReaderContext context) throws IOException { final SortedSetDocValues ordinals = ordinalsValues(context); return org.elasticsearch.index.fielddata.FieldData.docsWithValue(ordinals); }