summaryrefslogtreecommitdiff
path: root/core/src/main/java/org/elasticsearch/index/fielddata/plain/ParentChildIndexFieldData.java
diff options
context:
space:
mode:
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.java32
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();