diff options
author | Jim Ferenczi <jim.ferenczi@elastic.co> | 2017-05-19 17:11:23 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-05-19 17:11:23 +0200 |
commit | d241c4898e5d5ab87284cc3b351989d26947b552 (patch) | |
tree | 2aefac4d68554a2a4d0de3d26f8e79414858f14f /core/src/main/java/org/elasticsearch/search/aggregations | |
parent | b18df27d74664ac3254b8395b67d097b487fd7ce (diff) |
Removes parent child fielddata specialization (#24737)
This change removes the field data specialization needed for the parent field and replaces it with
a simple DocValuesIndexFieldData. The underlying global ordinals are retrieved via a new function called
IndexOrdinalsFieldData#getOrdinalMap.
The children aggregation is also modified to use a simple WithOrdinals value source rather than the deleted WithOrdinals.Parent.
Relates #20257
Diffstat (limited to 'core/src/main/java/org/elasticsearch/search/aggregations')
-rw-r--r-- | core/src/main/java/org/elasticsearch/search/aggregations/support/ValuesSource.java | 38 | ||||
-rw-r--r-- | core/src/main/java/org/elasticsearch/search/aggregations/support/ValuesSourceConfig.java | 5 |
2 files changed, 1 insertions, 42 deletions
diff --git a/core/src/main/java/org/elasticsearch/search/aggregations/support/ValuesSource.java b/core/src/main/java/org/elasticsearch/search/aggregations/support/ValuesSource.java index e6ed81c2d8..a8aaa25940 100644 --- a/core/src/main/java/org/elasticsearch/search/aggregations/support/ValuesSource.java +++ b/core/src/main/java/org/elasticsearch/search/aggregations/support/ValuesSource.java @@ -22,7 +22,6 @@ import org.apache.lucene.index.DirectoryReader; import org.apache.lucene.index.DocValues; import org.apache.lucene.index.IndexReader; import org.apache.lucene.index.LeafReaderContext; -import org.apache.lucene.index.SortedDocValues; import org.apache.lucene.index.SortedNumericDocValues; import org.apache.lucene.index.SortedSetDocValues; import org.apache.lucene.search.IndexSearcher; @@ -32,18 +31,15 @@ import org.apache.lucene.util.BytesRef; import org.elasticsearch.common.lucene.ScorerAware; import org.elasticsearch.index.fielddata.AbstractSortingNumericDocValues; import org.elasticsearch.index.fielddata.AtomicOrdinalsFieldData; -import org.elasticsearch.index.fielddata.AtomicParentChildFieldData; import org.elasticsearch.index.fielddata.IndexFieldData; import org.elasticsearch.index.fielddata.IndexGeoPointFieldData; import org.elasticsearch.index.fielddata.IndexNumericFieldData; import org.elasticsearch.index.fielddata.IndexOrdinalsFieldData; -import org.elasticsearch.index.fielddata.IndexParentChildFieldData; import org.elasticsearch.index.fielddata.MultiGeoPointValues; import org.elasticsearch.index.fielddata.SortedBinaryDocValues; import org.elasticsearch.index.fielddata.SortedNumericDoubleValues; import org.elasticsearch.index.fielddata.SortingBinaryDocValues; import org.elasticsearch.index.fielddata.SortingNumericDoubleValues; -import org.elasticsearch.index.fielddata.plain.ParentChildIndexFieldData; import org.elasticsearch.script.LeafSearchScript; import org.elasticsearch.script.SearchScript; import org.elasticsearch.search.aggregations.support.ValuesSource.WithScript.BytesValues; @@ -150,40 +146,6 @@ public abstract class ValuesSource { } } - public static class ParentChild extends Bytes { - - protected final ParentChildIndexFieldData indexFieldData; - - public ParentChild(ParentChildIndexFieldData indexFieldData) { - this.indexFieldData = indexFieldData; - } - - public long globalMaxOrd(IndexSearcher indexSearcher, String type) { - DirectoryReader indexReader = (DirectoryReader) indexSearcher.getIndexReader(); - if (indexReader.leaves().isEmpty()) { - return 0; - } else { - LeafReaderContext atomicReaderContext = indexReader.leaves().get(0); - IndexParentChildFieldData globalFieldData = indexFieldData.loadGlobal(indexReader); - AtomicParentChildFieldData afd = globalFieldData.load(atomicReaderContext); - SortedDocValues values = afd.getOrdinalsValues(type); - return values.getValueCount(); - } - } - - public SortedDocValues globalOrdinalsValues(String type, LeafReaderContext context) { - final IndexParentChildFieldData global = indexFieldData.loadGlobal((DirectoryReader)context.parent.reader()); - final AtomicParentChildFieldData atomicFieldData = global.load(context); - return atomicFieldData.getOrdinalsValues(type); - } - - @Override - public SortedBinaryDocValues bytesValues(LeafReaderContext context) { - final AtomicParentChildFieldData atomicFieldData = indexFieldData.load(context); - return atomicFieldData.getBytesValues(); - } - } - public static class FieldData extends Bytes { protected final IndexFieldData<?> indexFieldData; diff --git a/core/src/main/java/org/elasticsearch/search/aggregations/support/ValuesSourceConfig.java b/core/src/main/java/org/elasticsearch/search/aggregations/support/ValuesSourceConfig.java index 39b97a9b02..e5fac62840 100644 --- a/core/src/main/java/org/elasticsearch/search/aggregations/support/ValuesSourceConfig.java +++ b/core/src/main/java/org/elasticsearch/search/aggregations/support/ValuesSourceConfig.java @@ -26,7 +26,6 @@ import org.elasticsearch.index.fielddata.IndexFieldData; import org.elasticsearch.index.fielddata.IndexGeoPointFieldData; import org.elasticsearch.index.fielddata.IndexNumericFieldData; import org.elasticsearch.index.fielddata.IndexOrdinalsFieldData; -import org.elasticsearch.index.fielddata.plain.ParentChildIndexFieldData; import org.elasticsearch.index.mapper.MappedFieldType; import org.elasticsearch.index.query.QueryShardContext; import org.elasticsearch.script.Script; @@ -317,9 +316,7 @@ public class ValuesSourceConfig<VS extends ValuesSource> { private ValuesSource bytesField() throws IOException { final IndexFieldData<?> indexFieldData = fieldContext().indexFieldData(); ValuesSource dataSource; - if (indexFieldData instanceof ParentChildIndexFieldData) { - dataSource = new ValuesSource.Bytes.WithOrdinals.ParentChild((ParentChildIndexFieldData) indexFieldData); - } else if (indexFieldData instanceof IndexOrdinalsFieldData) { + if (indexFieldData instanceof IndexOrdinalsFieldData) { dataSource = new ValuesSource.Bytes.WithOrdinals.FieldData((IndexOrdinalsFieldData) indexFieldData); } else { dataSource = new ValuesSource.Bytes.FieldData(indexFieldData); |