Java Code Examples for org.elasticsearch.search.aggregations.InternalMultiBucketAggregation#getBuckets()
The following examples show how to use
org.elasticsearch.search.aggregations.InternalMultiBucketAggregation#getBuckets() .
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
Source File: BucketMetricsPipelineAggregator.java From Elasticsearch with Apache License 2.0 | 6 votes |
@Override public final InternalAggregation doReduce(Aggregations aggregations, ReduceContext context) { preCollection(); List<String> bucketsPath = AggregationPath.parse(bucketsPaths()[0]).getPathElementsAsStringList(); for (Aggregation aggregation : aggregations) { if (aggregation.getName().equals(bucketsPath.get(0))) { bucketsPath = bucketsPath.subList(1, bucketsPath.size()); InternalMultiBucketAggregation multiBucketsAgg = (InternalMultiBucketAggregation) aggregation; List<? extends Bucket> buckets = multiBucketsAgg.getBuckets(); for (int i = 0; i < buckets.size(); i++) { Bucket bucket = buckets.get(i); Double bucketValue = BucketHelpers.resolveBucketValue(multiBucketsAgg, bucket, bucketsPath, gapPolicy); if (bucketValue != null && !Double.isNaN(bucketValue)) { collectBucketValue(bucket.getKeyAsString(), bucketValue); } } } } return buildAggregation(Collections.EMPTY_LIST, metaData()); }
Example 2
Source File: BucketSelectorPipelineAggregator.java From Elasticsearch with Apache License 2.0 | 5 votes |
@Override public InternalAggregation reduce(InternalAggregation aggregation, ReduceContext reduceContext) { InternalMultiBucketAggregation<InternalMultiBucketAggregation, InternalMultiBucketAggregation.InternalBucket> originalAgg = (InternalMultiBucketAggregation<InternalMultiBucketAggregation, InternalMultiBucketAggregation.InternalBucket>) aggregation; List<? extends Bucket> buckets = originalAgg.getBuckets(); CompiledScript compiledScript = reduceContext.scriptService().compile(script, ScriptContext.Standard.AGGS, reduceContext, Collections.<String, String>emptyMap()); List newBuckets = new ArrayList<>(); for (Bucket bucket : buckets) { Map<String, Object> vars = new HashMap<>(); if (script.getParams() != null) { vars.putAll(script.getParams()); } for (Map.Entry<String, String> entry : bucketsPathsMap.entrySet()) { String varName = entry.getKey(); String bucketsPath = entry.getValue(); Double value = resolveBucketValue(originalAgg, bucket, bucketsPath, gapPolicy); vars.put(varName, value); } ExecutableScript executableScript = reduceContext.scriptService().executable(compiledScript, vars); Object scriptReturnValue = executableScript.run(); final boolean keepBucket; // TODO: WTF!!!!! if ("expression".equals(script.getLang())) { double scriptDoubleValue = (double) scriptReturnValue; keepBucket = scriptDoubleValue == 1.0; } else { keepBucket = (boolean) scriptReturnValue; } if (keepBucket) { newBuckets.add(bucket); } } return originalAgg.create(newBuckets); }
Example 3
Source File: TransportBasedClient.java From zeppelin with Apache License 2.0 | 5 votes |
private void setAggregations(Aggregations aggregations, ActionResponse actionResp) { // Only the result of the first aggregation is returned // final Aggregation agg = aggregations.asList().get(0); if (agg instanceof InternalMetricsAggregation) { actionResp.addAggregation(new AggWrapper(AggWrapper.AggregationType.SIMPLE, XContentHelper.toString((InternalMetricsAggregation) agg).toString())); } else if (agg instanceof InternalSingleBucketAggregation) { actionResp.addAggregation(new AggWrapper(AggWrapper.AggregationType.SIMPLE, XContentHelper.toString((InternalSingleBucketAggregation) agg).toString())); } else if (agg instanceof InternalMultiBucketAggregation) { final Set<String> headerKeys = new HashSet<>(); final List<Map<String, Object>> buckets = new LinkedList<>(); final InternalMultiBucketAggregation multiBucketAgg = (InternalMultiBucketAggregation) agg; for (final MultiBucketsAggregation.Bucket bucket : multiBucketAgg.getBuckets()) { try { final XContentBuilder builder = XContentFactory.jsonBuilder(); bucket.toXContent(builder, null); actionResp.addAggregation( new AggWrapper(AggWrapper.AggregationType.MULTI_BUCKETS, builder.string())); } catch (final IOException e) { // Ignored } } } }
Example 4
Source File: BucketScriptPipelineAggregator.java From Elasticsearch with Apache License 2.0 | 4 votes |
@Override public InternalAggregation reduce(InternalAggregation aggregation, ReduceContext reduceContext) { InternalMultiBucketAggregation<InternalMultiBucketAggregation, InternalMultiBucketAggregation.InternalBucket> originalAgg = (InternalMultiBucketAggregation<InternalMultiBucketAggregation, InternalMultiBucketAggregation.InternalBucket>) aggregation; List<? extends Bucket> buckets = originalAgg.getBuckets(); CompiledScript compiledScript = reduceContext.scriptService().compile(script, ScriptContext.Standard.AGGS, reduceContext, Collections.<String, String>emptyMap()); List newBuckets = new ArrayList<>(); for (Bucket bucket : buckets) { Map<String, Object> vars = new HashMap<>(); if (script.getParams() != null) { vars.putAll(script.getParams()); } boolean skipBucket = false; for (Map.Entry<String, String> entry : bucketsPathsMap.entrySet()) { String varName = entry.getKey(); String bucketsPath = entry.getValue(); Double value = resolveBucketValue(originalAgg, bucket, bucketsPath, gapPolicy); if (GapPolicy.SKIP == gapPolicy && (value == null || Double.isNaN(value))) { skipBucket = true; break; } vars.put(varName, value); } if (skipBucket) { newBuckets.add(bucket); } else { ExecutableScript executableScript = reduceContext.scriptService().executable(compiledScript, vars); Object returned = executableScript.run(); if (returned == null) { newBuckets.add(bucket); } else { if (!(returned instanceof Number)) { throw new AggregationExecutionException("series_arithmetic script for reducer [" + name() + "] must return a Number"); } List<InternalAggregation> aggs = new ArrayList<>(eagerTransform(bucket.getAggregations().asList(), FUNCTION)); aggs.add(new InternalSimpleValue(name(), ((Number) returned).doubleValue(), formatter, new ArrayList<PipelineAggregator>(), metaData())); InternalMultiBucketAggregation.InternalBucket newBucket = originalAgg.createBucket(new InternalAggregations(aggs), (InternalMultiBucketAggregation.InternalBucket) bucket); newBuckets.add(newBucket); } } } return originalAgg.create(newBuckets); }