Migrate nested, reverse_nested, and children aggregations to NamedWriteable

Just another step in removing AggregationStreams in favor of NamedWriteable.
This commit is contained in:
Nik Everett 2016-07-11 17:47:52 -04:00
parent 06bd896ce0
commit f2978f41b9
7 changed files with 51 additions and 86 deletions

View File

@ -544,10 +544,10 @@ public class SearchModule extends AbstractModule {
GeoDistanceAggregationBuilder.AGGREGATION_NAME_FIELD).addResultReader(InternalGeoDistance::new)); GeoDistanceAggregationBuilder.AGGREGATION_NAME_FIELD).addResultReader(InternalGeoDistance::new));
registerAggregation(new AggregationSpec(GeoGridAggregationBuilder::new, new GeoHashGridParser(), registerAggregation(new AggregationSpec(GeoGridAggregationBuilder::new, new GeoHashGridParser(),
GeoGridAggregationBuilder.AGGREGATION_NAME_FIELD).addResultReader(InternalGeoHashGrid::new)); GeoGridAggregationBuilder.AGGREGATION_NAME_FIELD).addResultReader(InternalGeoHashGrid::new));
registerAggregation(NestedAggregationBuilder::new, NestedAggregationBuilder::parse, registerAggregation(new AggregationSpec(NestedAggregationBuilder::new, NestedAggregationBuilder::parse,
NestedAggregationBuilder.AGGREGATION_FIELD_NAME); NestedAggregationBuilder.AGGREGATION_FIELD_NAME).addResultReader(InternalNested::new));
registerAggregation(ReverseNestedAggregationBuilder::new, ReverseNestedAggregationBuilder::parse, registerAggregation(new AggregationSpec(ReverseNestedAggregationBuilder::new, ReverseNestedAggregationBuilder::parse,
ReverseNestedAggregationBuilder.AGGREGATION_NAME_FIELD); ReverseNestedAggregationBuilder.AGGREGATION_NAME_FIELD).addResultReader(InternalReverseNested::new));
registerAggregation(TopHitsAggregationBuilder::new, TopHitsAggregationBuilder::parse, registerAggregation(TopHitsAggregationBuilder::new, TopHitsAggregationBuilder::parse,
TopHitsAggregationBuilder.AGGREGATION_NAME_FIELD); TopHitsAggregationBuilder.AGGREGATION_NAME_FIELD);
registerAggregation(new AggregationSpec(GeoBoundsAggregationBuilder::new, new GeoBoundsParser(), registerAggregation(new AggregationSpec(GeoBoundsAggregationBuilder::new, new GeoBoundsParser(),
@ -556,8 +556,8 @@ public class SearchModule extends AbstractModule {
GeoCentroidAggregationBuilder.AGGREGATION_NAME_FIELD).addResultReader(InternalGeoCentroid::new)); GeoCentroidAggregationBuilder.AGGREGATION_NAME_FIELD).addResultReader(InternalGeoCentroid::new));
registerAggregation(new AggregationSpec(ScriptedMetricAggregationBuilder::new, ScriptedMetricAggregationBuilder::parse, registerAggregation(new AggregationSpec(ScriptedMetricAggregationBuilder::new, ScriptedMetricAggregationBuilder::parse,
ScriptedMetricAggregationBuilder.AGGREGATION_NAME_FIELD).addResultReader(InternalScriptedMetric::new)); ScriptedMetricAggregationBuilder.AGGREGATION_NAME_FIELD).addResultReader(InternalScriptedMetric::new));
registerAggregation(ChildrenAggregationBuilder::new, ChildrenAggregationBuilder::parse, registerAggregation(new AggregationSpec(ChildrenAggregationBuilder::new, ChildrenAggregationBuilder::parse,
ChildrenAggregationBuilder.AGGREGATION_NAME_FIELD); ChildrenAggregationBuilder.AGGREGATION_NAME_FIELD).addResultReader(InternalChildren::new));
registerPipelineAggregation(DerivativePipelineAggregationBuilder::new, DerivativePipelineAggregationBuilder::parse, registerPipelineAggregation(DerivativePipelineAggregationBuilder::new, DerivativePipelineAggregationBuilder::parse,
DerivativePipelineAggregationBuilder.AGGREGATION_NAME_FIELD); DerivativePipelineAggregationBuilder.AGGREGATION_NAME_FIELD);
@ -824,10 +824,7 @@ public class SearchModule extends AbstractModule {
// buckets // buckets
InternalBinaryRange.registerStream(); InternalBinaryRange.registerStream();
InternalHistogram.registerStream(); InternalHistogram.registerStream();
InternalNested.registerStream();
InternalReverseNested.registerStream();
InternalTopHits.registerStreams(); InternalTopHits.registerStreams();
InternalChildren.registerStream();
// Pipeline Aggregations // Pipeline Aggregations
DerivativePipelineAggregator.registerStreams(); DerivativePipelineAggregator.registerStreams();

View File

@ -31,6 +31,7 @@ import org.elasticsearch.index.mapper.DocumentMapper;
import org.elasticsearch.index.mapper.internal.ParentFieldMapper; import org.elasticsearch.index.mapper.internal.ParentFieldMapper;
import org.elasticsearch.index.query.QueryParseContext; import org.elasticsearch.index.query.QueryParseContext;
import org.elasticsearch.search.aggregations.AggregatorFactories.Builder; import org.elasticsearch.search.aggregations.AggregatorFactories.Builder;
import org.elasticsearch.search.aggregations.InternalAggregation.Type;
import org.elasticsearch.search.aggregations.AggregatorFactory; import org.elasticsearch.search.aggregations.AggregatorFactory;
import org.elasticsearch.search.aggregations.support.AggregationContext; import org.elasticsearch.search.aggregations.support.AggregationContext;
import org.elasticsearch.search.aggregations.support.FieldContext; import org.elasticsearch.search.aggregations.support.FieldContext;
@ -45,7 +46,8 @@ import java.io.IOException;
import java.util.Objects; import java.util.Objects;
public class ChildrenAggregationBuilder extends ValuesSourceAggregationBuilder<ParentChild, ChildrenAggregationBuilder> { public class ChildrenAggregationBuilder extends ValuesSourceAggregationBuilder<ParentChild, ChildrenAggregationBuilder> {
public static final String NAME = InternalChildren.TYPE.name(); public static final String NAME = "children";
private static final Type TYPE = new Type(NAME);
public static final ParseField AGGREGATION_NAME_FIELD = new ParseField(NAME); public static final ParseField AGGREGATION_NAME_FIELD = new ParseField(NAME);
private String parentType; private String parentType;
@ -60,7 +62,7 @@ public class ChildrenAggregationBuilder extends ValuesSourceAggregationBuilder<P
* the type of children documents * the type of children documents
*/ */
public ChildrenAggregationBuilder(String name, String childType) { public ChildrenAggregationBuilder(String name, String childType) {
super(name, InternalChildren.TYPE, ValuesSourceType.BYTES, ValueType.STRING); super(name, TYPE, ValuesSourceType.BYTES, ValueType.STRING);
if (childType == null) { if (childType == null) {
throw new IllegalArgumentException("[childType] must not be null: [" + name + "]"); throw new IllegalArgumentException("[childType] must not be null: [" + name + "]");
} }
@ -71,7 +73,7 @@ public class ChildrenAggregationBuilder extends ValuesSourceAggregationBuilder<P
* Read from a stream. * Read from a stream.
*/ */
public ChildrenAggregationBuilder(StreamInput in) throws IOException { public ChildrenAggregationBuilder(StreamInput in) throws IOException {
super(in, InternalChildren.TYPE, ValuesSourceType.BYTES, ValueType.STRING); super(in, TYPE, ValuesSourceType.BYTES, ValueType.STRING);
childType = in.readString(); childType = in.readString();
} }

View File

@ -20,7 +20,6 @@
package org.elasticsearch.search.aggregations.bucket.children; package org.elasticsearch.search.aggregations.bucket.children;
import org.elasticsearch.common.io.stream.StreamInput; import org.elasticsearch.common.io.stream.StreamInput;
import org.elasticsearch.search.aggregations.AggregationStreams;
import org.elasticsearch.search.aggregations.InternalAggregations; import org.elasticsearch.search.aggregations.InternalAggregations;
import org.elasticsearch.search.aggregations.bucket.InternalSingleBucketAggregation; import org.elasticsearch.search.aggregations.bucket.InternalSingleBucketAggregation;
import org.elasticsearch.search.aggregations.pipeline.PipelineAggregator; import org.elasticsearch.search.aggregations.pipeline.PipelineAggregator;
@ -30,35 +29,24 @@ import java.util.List;
import java.util.Map; import java.util.Map;
/** /**
* Results of the {@link ParentToChildrenAggregator}.
*/ */
public class InternalChildren extends InternalSingleBucketAggregation implements Children { public class InternalChildren extends InternalSingleBucketAggregation implements Children {
public static final Type TYPE = new Type("children");
public static final AggregationStreams.Stream STREAM = new AggregationStreams.Stream() {
@Override
public InternalChildren readResult(StreamInput in) throws IOException {
InternalChildren result = new InternalChildren();
result.readFrom(in);
return result;
}
};
public static void registerStream() {
AggregationStreams.registerStream(STREAM, TYPE.stream());
}
public InternalChildren() {
}
public InternalChildren(String name, long docCount, InternalAggregations aggregations, List<PipelineAggregator> pipelineAggregators, public InternalChildren(String name, long docCount, InternalAggregations aggregations, List<PipelineAggregator> pipelineAggregators,
Map<String, Object> metaData) { Map<String, Object> metaData) {
super(name, docCount, aggregations, pipelineAggregators, metaData); super(name, docCount, aggregations, pipelineAggregators, metaData);
} }
/**
* Read from a stream.
*/
public InternalChildren(StreamInput in) throws IOException {
super(in);
}
@Override @Override
public Type type() { public String getWriteableName() {
return TYPE; return ChildrenAggregationBuilder.NAME;
} }
@Override @Override

View File

@ -19,7 +19,6 @@
package org.elasticsearch.search.aggregations.bucket.nested; package org.elasticsearch.search.aggregations.bucket.nested;
import org.elasticsearch.common.io.stream.StreamInput; import org.elasticsearch.common.io.stream.StreamInput;
import org.elasticsearch.search.aggregations.AggregationStreams;
import org.elasticsearch.search.aggregations.InternalAggregations; import org.elasticsearch.search.aggregations.InternalAggregations;
import org.elasticsearch.search.aggregations.bucket.InternalSingleBucketAggregation; import org.elasticsearch.search.aggregations.bucket.InternalSingleBucketAggregation;
import org.elasticsearch.search.aggregations.pipeline.PipelineAggregator; import org.elasticsearch.search.aggregations.pipeline.PipelineAggregator;
@ -29,36 +28,24 @@ import java.util.List;
import java.util.Map; import java.util.Map;
/** /**
* * Result of the {@link NestedAggregator}.
*/ */
public class InternalNested extends InternalSingleBucketAggregation implements Nested { public class InternalNested extends InternalSingleBucketAggregation implements Nested {
public static final Type TYPE = new Type("nested");
public static final AggregationStreams.Stream STREAM = new AggregationStreams.Stream() {
@Override
public InternalNested readResult(StreamInput in) throws IOException {
InternalNested result = new InternalNested();
result.readFrom(in);
return result;
}
};
public static void registerStream() {
AggregationStreams.registerStream(STREAM, TYPE.stream());
}
public InternalNested() {
}
public InternalNested(String name, long docCount, InternalAggregations aggregations, List<PipelineAggregator> pipelineAggregators, public InternalNested(String name, long docCount, InternalAggregations aggregations, List<PipelineAggregator> pipelineAggregators,
Map<String, Object> metaData) { Map<String, Object> metaData) {
super(name, docCount, aggregations, pipelineAggregators, metaData); super(name, docCount, aggregations, pipelineAggregators, metaData);
} }
/**
* Read from a stream.
*/
public InternalNested(StreamInput in) throws IOException {
super(in);
}
@Override @Override
public Type type() { public String getWriteableName() {
return TYPE; return NestedAggregationBuilder.NAME;
} }
@Override @Override

View File

@ -19,7 +19,6 @@
package org.elasticsearch.search.aggregations.bucket.nested; package org.elasticsearch.search.aggregations.bucket.nested;
import org.elasticsearch.common.io.stream.StreamInput; import org.elasticsearch.common.io.stream.StreamInput;
import org.elasticsearch.search.aggregations.AggregationStreams;
import org.elasticsearch.search.aggregations.InternalAggregations; import org.elasticsearch.search.aggregations.InternalAggregations;
import org.elasticsearch.search.aggregations.bucket.InternalSingleBucketAggregation; import org.elasticsearch.search.aggregations.bucket.InternalSingleBucketAggregation;
import org.elasticsearch.search.aggregations.pipeline.PipelineAggregator; import org.elasticsearch.search.aggregations.pipeline.PipelineAggregator;
@ -29,36 +28,24 @@ import java.util.List;
import java.util.Map; import java.util.Map;
/** /**
* * Result of the {@link ReverseNestedAggregator}.
*/ */
public class InternalReverseNested extends InternalSingleBucketAggregation implements ReverseNested { public class InternalReverseNested extends InternalSingleBucketAggregation implements ReverseNested {
public static final Type TYPE = new Type("reverse_nested");
public static final AggregationStreams.Stream STREAM = new AggregationStreams.Stream() {
@Override
public InternalReverseNested readResult(StreamInput in) throws IOException {
InternalReverseNested result = new InternalReverseNested();
result.readFrom(in);
return result;
}
};
public static void registerStream() {
AggregationStreams.registerStream(STREAM, TYPE.stream());
}
public InternalReverseNested() {
}
public InternalReverseNested(String name, long docCount, InternalAggregations aggregations, List<PipelineAggregator> pipelineAggregators, public InternalReverseNested(String name, long docCount, InternalAggregations aggregations, List<PipelineAggregator> pipelineAggregators,
Map<String, Object> metaData) { Map<String, Object> metaData) {
super(name, docCount, aggregations, pipelineAggregators, metaData); super(name, docCount, aggregations, pipelineAggregators, metaData);
} }
/**
* Read from a stream.
*/
public InternalReverseNested(StreamInput in) throws IOException {
super(in);
}
@Override @Override
public Type type() { public String getWriteableName() {
return TYPE; return ReverseNestedAggregationBuilder.NAME;
} }
@Override @Override

View File

@ -28,6 +28,7 @@ import org.elasticsearch.common.xcontent.XContentParser;
import org.elasticsearch.index.query.QueryParseContext; import org.elasticsearch.index.query.QueryParseContext;
import org.elasticsearch.search.aggregations.AbstractAggregationBuilder; import org.elasticsearch.search.aggregations.AbstractAggregationBuilder;
import org.elasticsearch.search.aggregations.AggregatorFactories.Builder; import org.elasticsearch.search.aggregations.AggregatorFactories.Builder;
import org.elasticsearch.search.aggregations.InternalAggregation.Type;
import org.elasticsearch.search.aggregations.AggregatorFactory; import org.elasticsearch.search.aggregations.AggregatorFactory;
import org.elasticsearch.search.aggregations.support.AggregationContext; import org.elasticsearch.search.aggregations.support.AggregationContext;
@ -35,7 +36,8 @@ import java.io.IOException;
import java.util.Objects; import java.util.Objects;
public class NestedAggregationBuilder extends AbstractAggregationBuilder<NestedAggregationBuilder> { public class NestedAggregationBuilder extends AbstractAggregationBuilder<NestedAggregationBuilder> {
public static final String NAME = InternalNested.TYPE.name(); public static final String NAME = "nested";
private static final Type TYPE = new Type(NAME);
public static final ParseField AGGREGATION_FIELD_NAME = new ParseField(NAME); public static final ParseField AGGREGATION_FIELD_NAME = new ParseField(NAME);
private final String path; private final String path;
@ -48,7 +50,7 @@ public class NestedAggregationBuilder extends AbstractAggregationBuilder<NestedA
* match the path to a nested object in the mappings. * match the path to a nested object in the mappings.
*/ */
public NestedAggregationBuilder(String name, String path) { public NestedAggregationBuilder(String name, String path) {
super(name, InternalNested.TYPE); super(name, TYPE);
if (path == null) { if (path == null) {
throw new IllegalArgumentException("[path] must not be null: [" + name + "]"); throw new IllegalArgumentException("[path] must not be null: [" + name + "]");
} }
@ -59,7 +61,7 @@ public class NestedAggregationBuilder extends AbstractAggregationBuilder<NestedA
* Read from a stream. * Read from a stream.
*/ */
public NestedAggregationBuilder(StreamInput in) throws IOException { public NestedAggregationBuilder(StreamInput in) throws IOException {
super(in, InternalNested.TYPE); super(in, TYPE);
path = in.readString(); path = in.readString();
} }

View File

@ -28,6 +28,7 @@ import org.elasticsearch.common.xcontent.XContentParser;
import org.elasticsearch.index.query.QueryParseContext; import org.elasticsearch.index.query.QueryParseContext;
import org.elasticsearch.search.aggregations.AbstractAggregationBuilder; import org.elasticsearch.search.aggregations.AbstractAggregationBuilder;
import org.elasticsearch.search.aggregations.AggregatorFactories.Builder; import org.elasticsearch.search.aggregations.AggregatorFactories.Builder;
import org.elasticsearch.search.aggregations.InternalAggregation.Type;
import org.elasticsearch.search.aggregations.AggregatorFactory; import org.elasticsearch.search.aggregations.AggregatorFactory;
import org.elasticsearch.search.aggregations.support.AggregationContext; import org.elasticsearch.search.aggregations.support.AggregationContext;
@ -35,20 +36,21 @@ import java.io.IOException;
import java.util.Objects; import java.util.Objects;
public class ReverseNestedAggregationBuilder extends AbstractAggregationBuilder<ReverseNestedAggregationBuilder> { public class ReverseNestedAggregationBuilder extends AbstractAggregationBuilder<ReverseNestedAggregationBuilder> {
public static final String NAME = InternalReverseNested.TYPE.name(); public static final String NAME = "reverse_nested";
private static final Type TYPE = new Type(NAME);
public static final ParseField AGGREGATION_NAME_FIELD = new ParseField(NAME); public static final ParseField AGGREGATION_NAME_FIELD = new ParseField(NAME);
private String path; private String path;
public ReverseNestedAggregationBuilder(String name) { public ReverseNestedAggregationBuilder(String name) {
super(name, InternalReverseNested.TYPE); super(name, TYPE);
} }
/** /**
* Read from a stream. * Read from a stream.
*/ */
public ReverseNestedAggregationBuilder(StreamInput in) throws IOException { public ReverseNestedAggregationBuilder(StreamInput in) throws IOException {
super(in, InternalReverseNested.TYPE); super(in, TYPE);
path = in.readOptionalString(); path = in.readOptionalString();
} }