Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
/*
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
* or more contributor license agreements. Licensed under the "Elastic License
* 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side
* Public License v 1"; you may not use this file except in compliance with, at
* your election, the "Elastic License 2.0", the "GNU Affero General Public
* License v3.0 only", or the "Server Side Public License, v 1".
*/

package org.elasticsearch.index.codec;

import org.apache.lucene.codecs.DocValuesProducer;
import org.apache.lucene.index.BinaryDocValues;
import org.apache.lucene.index.DocValuesSkipper;
import org.apache.lucene.index.FieldInfo;
import org.apache.lucene.index.NumericDocValues;
import org.apache.lucene.index.SortedDocValues;
import org.apache.lucene.index.SortedNumericDocValues;
import org.apache.lucene.index.SortedSetDocValues;

import java.io.IOException;

/**
* Implementation that allows wrapping another {@link DocValuesProducer} and alter behaviour of the wrapped instance.
*/
public abstract class FilterDocValuesProducer extends DocValuesProducer {
private final DocValuesProducer in;

protected FilterDocValuesProducer(DocValuesProducer in) {
this.in = in;
}

@Override
public NumericDocValues getNumeric(FieldInfo field) throws IOException {
return in.getNumeric(field);
}

@Override
public BinaryDocValues getBinary(FieldInfo field) throws IOException {
return in.getBinary(field);
}

@Override
public SortedDocValues getSorted(FieldInfo field) throws IOException {
return in.getSorted(field);
}

@Override
public SortedNumericDocValues getSortedNumeric(FieldInfo field) throws IOException {
return in.getSortedNumeric(field);
}

@Override
public SortedSetDocValues getSortedSet(FieldInfo field) throws IOException {
return in.getSortedSet(field);
}

@Override
public DocValuesSkipper getSkipper(FieldInfo field) throws IOException {
return in.getSkipper(field);
}

@Override
public void checkIntegrity() throws IOException {
in.checkIntegrity();
}

@Override
public void close() throws IOException {
in.close();
}

public DocValuesProducer getIn() {
return in;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
import org.apache.lucene.codecs.DocValuesProducer;
import org.apache.lucene.index.FieldInfo;
import org.apache.lucene.index.MergeState;
import org.elasticsearch.index.codec.FilterDocValuesProducer;
import org.elasticsearch.index.codec.perfield.XPerFieldDocValuesFormat;

/**
Expand Down Expand Up @@ -40,6 +41,10 @@ static MergeStats compatibleWithOptimizedMerge(boolean optimizedMergeEnabled, Me

for (int i = 0; i < mergeState.docValuesProducers.length; i++) {
DocValuesProducer docValuesProducer = mergeState.docValuesProducers[i];
if (docValuesProducer instanceof FilterDocValuesProducer filterDocValuesProducer) {
docValuesProducer = filterDocValuesProducer.getIn();
}

if (docValuesProducer instanceof XPerFieldDocValuesFormat.FieldsReader perFieldReader) {
var wrapped = perFieldReader.getDocValuesProducer(fieldInfo);
if (wrapped instanceof ES819TSDBDocValuesProducer tsdbDocValuesProducer) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,18 +11,13 @@

import org.apache.lucene.codecs.DocValuesProducer;
import org.apache.lucene.codecs.StoredFieldsReader;
import org.apache.lucene.index.BinaryDocValues;
import org.apache.lucene.index.CodecReader;
import org.apache.lucene.index.DocValuesSkipper;
import org.apache.lucene.index.FieldInfo;
import org.apache.lucene.index.FilterCodecReader;
import org.apache.lucene.index.FilterNumericDocValues;
import org.apache.lucene.index.MergePolicy;
import org.apache.lucene.index.NumericDocValues;
import org.apache.lucene.index.OneMergeWrappingMergePolicy;
import org.apache.lucene.index.SortedDocValues;
import org.apache.lucene.index.SortedNumericDocValues;
import org.apache.lucene.index.SortedSetDocValues;
import org.apache.lucene.index.StoredFieldVisitor;
import org.apache.lucene.search.ConjunctionUtils;
import org.apache.lucene.search.DocIdSetIterator;
Expand All @@ -34,6 +29,7 @@
import org.apache.lucene.util.BitSet;
import org.apache.lucene.util.BitSetIterator;
import org.elasticsearch.core.Nullable;
import org.elasticsearch.index.codec.FilterDocValuesProducer;
import org.elasticsearch.index.mapper.IdFieldMapper;
import org.elasticsearch.search.internal.FilterStoredFieldVisitor;

Expand Down Expand Up @@ -177,54 +173,6 @@ public CacheHelper getReaderCacheHelper() {
return null;
}

private static class FilterDocValuesProducer extends DocValuesProducer {
private final DocValuesProducer in;

FilterDocValuesProducer(DocValuesProducer in) {
this.in = in;
}

@Override
public NumericDocValues getNumeric(FieldInfo field) throws IOException {
return in.getNumeric(field);
}

@Override
public BinaryDocValues getBinary(FieldInfo field) throws IOException {
return in.getBinary(field);
}

@Override
public SortedDocValues getSorted(FieldInfo field) throws IOException {
return in.getSorted(field);
}

@Override
public SortedNumericDocValues getSortedNumeric(FieldInfo field) throws IOException {
return in.getSortedNumeric(field);
}

@Override
public SortedSetDocValues getSortedSet(FieldInfo field) throws IOException {
return in.getSortedSet(field);
}

@Override
public DocValuesSkipper getSkipper(FieldInfo field) throws IOException {
return in.getSkipper(field);
}

@Override
public void checkIntegrity() throws IOException {
in.checkIntegrity();
}

@Override
public void close() throws IOException {
in.close();
}
}

private abstract static class FilterStoredFieldsReader extends StoredFieldsReader {

protected final StoredFieldsReader in;
Expand Down