summaryrefslogtreecommitdiff
path: root/core/src/main/java/org/elasticsearch/search/aggregations/pipeline/bucketmetrics/stats/extended/ExtendedStatsBucketPipelineAggregator.java
diff options
context:
space:
mode:
authorColin Goodheart-Smithe <colings86@users.noreply.github.com>2015-11-25 11:40:35 +0000
committerColin Goodheart-Smithe <colings86@users.noreply.github.com>2015-12-21 09:34:41 +0000
commita0e60bf228beff892112184322f246d9b966e5b7 (patch)
treef57c04ecf1082783d8a1263a7c58080f9b1c5acd /core/src/main/java/org/elasticsearch/search/aggregations/pipeline/bucketmetrics/stats/extended/ExtendedStatsBucketPipelineAggregator.java
parent75f20c494dc8370c8fd20d0a594e1c638a5eb02b (diff)
Aggregations Refactor: Refactor Avg Bucket, Min Bucket, Max Bucket, Sum Bucket, Percentiles Bucket, Stats Bucket and Extended Stats Bucket Aggregations
Diffstat (limited to 'core/src/main/java/org/elasticsearch/search/aggregations/pipeline/bucketmetrics/stats/extended/ExtendedStatsBucketPipelineAggregator.java')
-rw-r--r--core/src/main/java/org/elasticsearch/search/aggregations/pipeline/bucketmetrics/stats/extended/ExtendedStatsBucketPipelineAggregator.java60
1 files changed, 52 insertions, 8 deletions
diff --git a/core/src/main/java/org/elasticsearch/search/aggregations/pipeline/bucketmetrics/stats/extended/ExtendedStatsBucketPipelineAggregator.java b/core/src/main/java/org/elasticsearch/search/aggregations/pipeline/bucketmetrics/stats/extended/ExtendedStatsBucketPipelineAggregator.java
index 6a7f2bec3f..647c1be8ed 100644
--- a/core/src/main/java/org/elasticsearch/search/aggregations/pipeline/bucketmetrics/stats/extended/ExtendedStatsBucketPipelineAggregator.java
+++ b/core/src/main/java/org/elasticsearch/search/aggregations/pipeline/bucketmetrics/stats/extended/ExtendedStatsBucketPipelineAggregator.java
@@ -20,6 +20,8 @@
package org.elasticsearch.search.aggregations.pipeline.bucketmetrics.stats.extended;
import org.elasticsearch.common.io.stream.StreamInput;
+import org.elasticsearch.common.io.stream.StreamOutput;
+import org.elasticsearch.common.xcontent.XContentBuilder;
import org.elasticsearch.search.aggregations.AggregatorFactory;
import org.elasticsearch.search.aggregations.InternalAggregation;
import org.elasticsearch.search.aggregations.InternalAggregation.Type;
@@ -27,12 +29,14 @@ import org.elasticsearch.search.aggregations.pipeline.BucketHelpers.GapPolicy;
import org.elasticsearch.search.aggregations.pipeline.PipelineAggregator;
import org.elasticsearch.search.aggregations.pipeline.PipelineAggregatorFactory;
import org.elasticsearch.search.aggregations.pipeline.PipelineAggregatorStreams;
+import org.elasticsearch.search.aggregations.pipeline.bucketmetrics.BucketMetricsFactory;
import org.elasticsearch.search.aggregations.pipeline.bucketmetrics.BucketMetricsPipelineAggregator;
import org.elasticsearch.search.aggregations.support.format.ValueFormatter;
import java.io.IOException;
import java.util.List;
import java.util.Map;
+import java.util.Objects;
public class ExtendedStatsBucketPipelineAggregator extends BucketMetricsPipelineAggregator {
@@ -97,22 +101,33 @@ public class ExtendedStatsBucketPipelineAggregator extends BucketMetricsPipeline
return new InternalExtendedStatsBucket(name(), count, sum, min, max, sumOfSqrs, sigma, formatter, pipelineAggregators, metadata);
}
- public static class Factory extends PipelineAggregatorFactory {
+ public static class Factory extends BucketMetricsFactory {
- private final ValueFormatter formatter;
- private final GapPolicy gapPolicy;
- private final double sigma;
+ private double sigma = 2.0;
- public Factory(String name, String[] bucketsPaths, double sigma, GapPolicy gapPolicy, ValueFormatter formatter) {
+ public Factory(String name, String[] bucketsPaths) {
super(name, TYPE.name(), bucketsPaths);
- this.gapPolicy = gapPolicy;
- this.formatter = formatter;
+ }
+
+ /**
+ * Set the value of sigma to use when calculating the standard deviation
+ * bounds
+ */
+ public void sigma(double sigma) {
this.sigma = sigma;
}
+ /**
+ * Get the value of sigma to use when calculating the standard deviation
+ * bounds
+ */
+ public double sigma() {
+ return sigma;
+ }
+
@Override
protected PipelineAggregator createInternal(Map<String, Object> metaData) throws IOException {
- return new ExtendedStatsBucketPipelineAggregator(name, bucketsPaths, sigma, gapPolicy, formatter, metaData);
+ return new ExtendedStatsBucketPipelineAggregator(name, bucketsPaths, sigma, gapPolicy(), formatter(), metaData);
}
@Override
@@ -129,6 +144,35 @@ public class ExtendedStatsBucketPipelineAggregator extends BucketMetricsPipeline
}
}
+ @Override
+ protected XContentBuilder doXContentBody(XContentBuilder builder, Params params) throws IOException {
+ builder.field(ExtendedStatsBucketParser.SIGMA.getPreferredName(), sigma);
+ return builder;
+ }
+
+ @Override
+ protected BucketMetricsFactory innerReadFrom(String name, String[] bucketsPaths, StreamInput in) throws IOException {
+ Factory factory = new Factory(name, bucketsPaths);
+ factory.sigma = in.readDouble();
+ return factory;
+ }
+
+ @Override
+ protected void innerWriteTo(StreamOutput out) throws IOException {
+ out.writeDouble(sigma);
+ }
+
+ @Override
+ protected int innerHashCode() {
+ return Objects.hash(sigma);
+ }
+
+ @Override
+ protected boolean innerEquals(BucketMetricsFactory obj) {
+ Factory other = (Factory) obj;
+ return Objects.equals(sigma, other.sigma);
+ }
+
}
}