diff options
Diffstat (limited to 'core/src/main/java/org/elasticsearch/index/fielddata/plain/ParentChildIndexFieldData.java')
-rw-r--r-- | core/src/main/java/org/elasticsearch/index/fielddata/plain/ParentChildIndexFieldData.java | 32 |
1 files changed, 19 insertions, 13 deletions
diff --git a/core/src/main/java/org/elasticsearch/index/fielddata/plain/ParentChildIndexFieldData.java b/core/src/main/java/org/elasticsearch/index/fielddata/plain/ParentChildIndexFieldData.java index ee451ff023..74b180f2c1 100644 --- a/core/src/main/java/org/elasticsearch/index/fielddata/plain/ParentChildIndexFieldData.java +++ b/core/src/main/java/org/elasticsearch/index/fielddata/plain/ParentChildIndexFieldData.java @@ -40,6 +40,7 @@ import org.elasticsearch.common.lease.Releasables; import org.elasticsearch.common.unit.TimeValue; import org.elasticsearch.index.Index; import org.elasticsearch.index.IndexSettings; +import org.elasticsearch.index.fielddata.AbstractSortedDocValues; import org.elasticsearch.index.fielddata.AtomicParentChildFieldData; import org.elasticsearch.index.fielddata.IndexFieldData; import org.elasticsearch.index.fielddata.IndexFieldData.XFieldComparatorSource.Nested; @@ -254,10 +255,10 @@ public class ParentChildIndexFieldData extends AbstractIndexFieldData<AtomicPare return segmentValues; } final LongValues globalOrds = ordMap.getGlobalOrds(segmentIndex); - return new SortedDocValues() { + return new AbstractSortedDocValues() { @Override - public BytesRef lookupOrd(int ord) { + public BytesRef lookupOrd(int ord) throws IOException { final int segmentIndex = ordMap.getFirstSegmentNumber(ord); final int segmentOrd = (int) ordMap.getFirstSegmentOrd(ord); return allSegmentValues[segmentIndex].lookupOrd(segmentOrd); @@ -269,14 +270,18 @@ public class ParentChildIndexFieldData extends AbstractIndexFieldData<AtomicPare } @Override - public int getOrd(int docID) { - final int segmentOrd = segmentValues.getOrd(docID); - // TODO: is there a way we can get rid of this branch? - if (segmentOrd >= 0) { - return (int) globalOrds.get(segmentOrd); - } else { - return segmentOrd; - } + public int ordValue() throws IOException { + return (int) globalOrds.get(segmentValues.ordValue()); + } + + @Override + public boolean advanceExact(int target) throws IOException { + return segmentValues.advanceExact(target); + } + + @Override + public int docID() { + return segmentValues.docID(); } }; } @@ -313,7 +318,7 @@ public class ParentChildIndexFieldData extends AbstractIndexFieldData<AtomicPare private final Map<String, OrdinalMapAndAtomicFieldData> ordinalMapPerType; GlobalFieldData(IndexReader reader, AtomicParentChildFieldData[] fielddata, long ramBytesUsed, Map<String, OrdinalMapAndAtomicFieldData> ordinalMapPerType) { - this.coreCacheKey = reader.getCoreCacheKey(); + this.coreCacheKey = reader.getReaderCacheHelper().getKey(); this.leaves = reader.leaves(); this.ramBytesUsed = ramBytesUsed; this.fielddata = fielddata; @@ -327,7 +332,8 @@ public class ParentChildIndexFieldData extends AbstractIndexFieldData<AtomicPare @Override public AtomicParentChildFieldData load(LeafReaderContext context) { - assert context.reader().getCoreCacheKey() == leaves.get(context.ord).reader().getCoreCacheKey(); + assert context.reader().getCoreCacheHelper().getKey() == leaves.get(context.ord) + .reader().getCoreCacheHelper().getKey(); return fielddata[context.ord]; } @@ -363,7 +369,7 @@ public class ParentChildIndexFieldData extends AbstractIndexFieldData<AtomicPare @Override public IndexParentChildFieldData loadGlobal(DirectoryReader indexReader) { - if (indexReader.getCoreCacheKey() == coreCacheKey) { + if (indexReader.getReaderCacheHelper().getKey() == coreCacheKey) { return this; } throw new IllegalStateException(); |