use of org.elasticsearch.search.aggregations.metrics.sum.Sum in project elasticsearch by elastic.
the class MetaDataIT method testMetaDataSetOnAggregationResult.
public void testMetaDataSetOnAggregationResult() throws Exception {
assertAcked(client().admin().indices().prepareCreate("idx").addMapping("type", "name", "type=keyword").get());
IndexRequestBuilder[] builders = new IndexRequestBuilder[randomInt(30)];
for (int i = 0; i < builders.length; i++) {
String name = "name_" + randomIntBetween(1, 10);
builders[i] = client().prepareIndex("idx", "type").setSource(jsonBuilder().startObject().field("name", name).field("value", randomInt()).endObject());
}
indexRandom(true, builders);
ensureSearchable();
final Map<String, Object> nestedMetaData = new HashMap<String, Object>() {
{
put("nested", "value");
}
};
Map<String, Object> metaData = new HashMap<String, Object>() {
{
put("key", "value");
put("numeric", 1.2);
put("bool", true);
put("complex", nestedMetaData);
}
};
SearchResponse response = client().prepareSearch("idx").addAggregation(terms("the_terms").setMetaData(metaData).field("name").subAggregation(sum("the_sum").setMetaData(metaData).field("value"))).addAggregation(maxBucket("the_max_bucket", "the_terms>the_sum").setMetaData(metaData)).execute().actionGet();
assertSearchResponse(response);
Aggregations aggs = response.getAggregations();
assertNotNull(aggs);
Terms terms = aggs.get("the_terms");
assertNotNull(terms);
assertMetaData(terms.getMetaData());
List<? extends Terms.Bucket> buckets = terms.getBuckets();
for (Terms.Bucket bucket : buckets) {
Aggregations subAggs = bucket.getAggregations();
assertNotNull(subAggs);
Sum sum = subAggs.get("the_sum");
assertNotNull(sum);
assertMetaData(sum.getMetaData());
}
InternalBucketMetricValue maxBucket = aggs.get("the_max_bucket");
assertNotNull(maxBucket);
assertMetaData(maxBucket.getMetaData());
}
use of org.elasticsearch.search.aggregations.metrics.sum.Sum in project elasticsearch by elastic.
the class ChildrenIT method testWithDeletes.
public void testWithDeletes() throws Exception {
String indexName = "xyz";
assertAcked(prepareCreate(indexName).addMapping("parent").addMapping("child", "_parent", "type=parent", "count", "type=long"));
List<IndexRequestBuilder> requests = new ArrayList<>();
requests.add(client().prepareIndex(indexName, "parent", "1").setSource("{}", XContentType.JSON));
requests.add(client().prepareIndex(indexName, "child", "0").setParent("1").setSource("count", 1));
requests.add(client().prepareIndex(indexName, "child", "1").setParent("1").setSource("count", 1));
requests.add(client().prepareIndex(indexName, "child", "2").setParent("1").setSource("count", 1));
requests.add(client().prepareIndex(indexName, "child", "3").setParent("1").setSource("count", 1));
indexRandom(true, requests);
for (int i = 0; i < 10; i++) {
SearchResponse searchResponse = client().prepareSearch(indexName).addAggregation(children("children", "child").subAggregation(sum("counts").field("count"))).get();
assertNoFailures(searchResponse);
Children children = searchResponse.getAggregations().get("children");
assertThat(children.getDocCount(), equalTo(4L));
Sum count = children.getAggregations().get("counts");
assertThat(count.getValue(), equalTo(4.));
String idToUpdate = Integer.toString(randomInt(3));
/*
* The whole point of this test is to test these things with deleted
* docs in the index so we turn off detect_noop to make sure that
* the updates cause that.
*/
UpdateResponse updateResponse = client().prepareUpdate(indexName, "child", idToUpdate).setParent("1").setDoc(Requests.INDEX_CONTENT_TYPE, "count", 1).setDetectNoop(false).get();
assertThat(updateResponse.getVersion(), greaterThan(1L));
refresh();
}
}
use of org.elasticsearch.search.aggregations.metrics.sum.Sum in project elasticsearch by elastic.
the class AvgBucketIT method testMetricAsSubAgg.
public void testMetricAsSubAgg() throws Exception {
SearchResponse response = client().prepareSearch("idx").addAggregation(terms("terms").field("tag").order(Order.term(true)).subAggregation(histogram("histo").field(SINGLE_VALUED_FIELD_NAME).interval(interval).extendedBounds(minRandomValue, maxRandomValue).subAggregation(sum("sum").field(SINGLE_VALUED_FIELD_NAME))).subAggregation(avgBucket("avg_bucket", "histo>sum"))).execute().actionGet();
assertSearchResponse(response);
Terms terms = response.getAggregations().get("terms");
assertThat(terms, notNullValue());
assertThat(terms.getName(), equalTo("terms"));
List<Terms.Bucket> termsBuckets = terms.getBuckets();
assertThat(termsBuckets.size(), equalTo(interval));
for (int i = 0; i < interval; ++i) {
Terms.Bucket termsBucket = termsBuckets.get(i);
assertThat(termsBucket, notNullValue());
assertThat((String) termsBucket.getKey(), equalTo("tag" + (i % interval)));
Histogram histo = termsBucket.getAggregations().get("histo");
assertThat(histo, notNullValue());
assertThat(histo.getName(), equalTo("histo"));
List<? extends Bucket> buckets = histo.getBuckets();
double bucketSum = 0;
int count = 0;
for (int j = 0; j < numValueBuckets; ++j) {
Histogram.Bucket bucket = buckets.get(j);
assertThat(bucket, notNullValue());
assertThat(((Number) bucket.getKey()).longValue(), equalTo((long) j * interval));
if (bucket.getDocCount() != 0) {
Sum sum = bucket.getAggregations().get("sum");
assertThat(sum, notNullValue());
count++;
bucketSum += sum.value();
}
}
double avgValue = count == 0 ? Double.NaN : (bucketSum / count);
InternalSimpleValue avgBucketValue = termsBucket.getAggregations().get("avg_bucket");
assertThat(avgBucketValue, notNullValue());
assertThat(avgBucketValue.getName(), equalTo("avg_bucket"));
assertThat(avgBucketValue.value(), equalTo(avgValue));
}
}
use of org.elasticsearch.search.aggregations.metrics.sum.Sum in project elasticsearch by elastic.
the class AvgBucketIT method testMetricTopLevel.
public void testMetricTopLevel() throws Exception {
SearchResponse response = client().prepareSearch("idx").addAggregation(terms("terms").field("tag").subAggregation(sum("sum").field(SINGLE_VALUED_FIELD_NAME))).addAggregation(avgBucket("avg_bucket", "terms>sum")).execute().actionGet();
assertSearchResponse(response);
Terms terms = response.getAggregations().get("terms");
assertThat(terms, notNullValue());
assertThat(terms.getName(), equalTo("terms"));
List<Terms.Bucket> buckets = terms.getBuckets();
assertThat(buckets.size(), equalTo(interval));
double bucketSum = 0;
int count = 0;
for (int i = 0; i < interval; ++i) {
Terms.Bucket bucket = buckets.get(i);
assertThat(bucket, notNullValue());
assertThat((String) bucket.getKey(), equalTo("tag" + (i % interval)));
assertThat(bucket.getDocCount(), greaterThan(0L));
Sum sum = bucket.getAggregations().get("sum");
assertThat(sum, notNullValue());
count++;
bucketSum += sum.value();
}
double avgValue = count == 0 ? Double.NaN : (bucketSum / count);
InternalSimpleValue avgBucketValue = response.getAggregations().get("avg_bucket");
assertThat(avgBucketValue, notNullValue());
assertThat(avgBucketValue.getName(), equalTo("avg_bucket"));
assertThat(avgBucketValue.value(), equalTo(avgValue));
}
use of org.elasticsearch.search.aggregations.metrics.sum.Sum in project elasticsearch by elastic.
the class BucketScriptIT method testInlineScriptNamedVars.
public void testInlineScriptNamedVars() {
Map<String, String> bucketsPathsMap = new HashMap<>();
bucketsPathsMap.put("foo", "field2Sum");
bucketsPathsMap.put("bar", "field3Sum");
bucketsPathsMap.put("baz", "field4Sum");
SearchResponse response = client().prepareSearch("idx").addAggregation(histogram("histo").field(FIELD_1_NAME).interval(interval).subAggregation(sum("field2Sum").field(FIELD_2_NAME)).subAggregation(sum("field3Sum").field(FIELD_3_NAME)).subAggregation(sum("field4Sum").field(FIELD_4_NAME)).subAggregation(bucketScript("seriesArithmetic", bucketsPathsMap, new Script(ScriptType.INLINE, CustomScriptPlugin.NAME, "foo + bar + baz", Collections.emptyMap())))).execute().actionGet();
assertSearchResponse(response);
Histogram histo = response.getAggregations().get("histo");
assertThat(histo, notNullValue());
assertThat(histo.getName(), equalTo("histo"));
List<? extends Histogram.Bucket> buckets = histo.getBuckets();
for (int i = 0; i < buckets.size(); ++i) {
Histogram.Bucket bucket = buckets.get(i);
if (bucket.getDocCount() == 0) {
SimpleValue seriesArithmetic = bucket.getAggregations().get("seriesArithmetic");
assertThat(seriesArithmetic, nullValue());
} else {
Sum field2Sum = bucket.getAggregations().get("field2Sum");
assertThat(field2Sum, notNullValue());
double field2SumValue = field2Sum.getValue();
Sum field3Sum = bucket.getAggregations().get("field3Sum");
assertThat(field3Sum, notNullValue());
double field3SumValue = field3Sum.getValue();
Sum field4Sum = bucket.getAggregations().get("field4Sum");
assertThat(field4Sum, notNullValue());
double field4SumValue = field4Sum.getValue();
SimpleValue seriesArithmetic = bucket.getAggregations().get("seriesArithmetic");
assertThat(seriesArithmetic, notNullValue());
double seriesArithmeticValue = seriesArithmetic.value();
assertThat(seriesArithmeticValue, equalTo(field2SumValue + field3SumValue + field4SumValue));
}
}
}
Aggregations