@Test public void reverseAnotherNestedGroupByOnNestedFieldWithFilterTestWithReverseNestedNoPath() throws Exception { Aggregations result = query( String.format( "SELECT COUNT(*) FROM %s/nestedType GROUP BY nested(message.info),filter('myFilter',message.info = 'a'),reverse_nested(comment.data,'~comment')", TEST_INDEX)); InternalNested nested = result.get("message.info@NESTED"); InternalFilter filter = nested.getAggregations().get("myFilter@FILTER"); Terms infos = filter.getAggregations().get("message.info"); Assert.assertEquals(1, infos.getBuckets().size()); for (Terms.Bucket bucket : infos.getBuckets()) { InternalReverseNested reverseNested = bucket.getAggregations().get("comment.data@NESTED_REVERSED"); InternalNested innerNested = reverseNested.getAggregations().get("comment.data@NESTED"); Terms terms = innerNested.getAggregations().get("comment.data"); Terms.Bucket internalBucket = terms.getBuckets().get(0); long count = ((ValueCount) internalBucket.getAggregations().get("COUNT(*)")).getValue(); String key = internalBucket.getKey(); if (key.equalsIgnoreCase("ab")) { Assert.assertEquals(2, count); } else { throw new Exception(String.format("Unexpected key. expected: only a . found: %s", key)); } } }
@Test public void sumOnNestedField() throws Exception { Aggregations result = query( String.format( "SELECT sum(nested(message.dayOfWeek)) as sumDays FROM %s/nestedType", TEST_INDEX)); InternalNested nested = result.get("message.dayOfWeek@NESTED"); Sum sum = nested.getAggregations().get("sumDays"); Assert.assertEquals(13.0, sum.getValue(), 0.0001); }
@Test public void minOnNestedField() throws Exception { Aggregations result = query( String.format( "SELECT min(nested(message.dayOfWeek)) as minDays FROM %s/nestedType", TEST_INDEX)); InternalNested nested = result.get("message.dayOfWeek@NESTED"); Min mins = nested.getAggregations().get("minDays"); Assert.assertEquals(1.0, mins.getValue(), 0.0001); }
@Test public void reverseToRootGroupByOnNestedFieldWithFilterAndSumOnReverseNestedField() throws Exception { Aggregations result = query( String.format( "SELECT sum(reverse_nested(myNum)) bla FROM %s/nestedType GROUP BY nested(message.info),filter('myFilter',message.info = 'a')", TEST_INDEX)); InternalNested nested = result.get("message.info@NESTED"); InternalFilter filter = nested.getAggregations().get("myFilter@FILTER"); Terms infos = filter.getAggregations().get("message.info"); Assert.assertEquals(1, infos.getBuckets().size()); for (Terms.Bucket bucket : infos.getBuckets()) { InternalReverseNested reverseNested = bucket.getAggregations().get("myNum@NESTED"); InternalSum sum = reverseNested.getAggregations().get("bla"); Assert.assertEquals(5.0, sum.getValue(), 0.000001); } }
@Test public void reverseToRootGroupByOnNestedFieldWithFilterTestWithReverseNestedOnHistogram() throws Exception { Aggregations result = query( String.format( "SELECT COUNT(*) FROM %s/nestedType GROUP BY nested(message.info),filter('myFilter',message.info = 'a'),histogram('field'='myNum','reverse_nested'='','interval'='2' , 'alias' = 'someAlias' )", TEST_INDEX)); InternalNested nested = result.get("message.info@NESTED"); InternalFilter filter = nested.getAggregations().get("myFilter@FILTER"); Terms infos = filter.getAggregations().get("message.info"); Assert.assertEquals(1, infos.getBuckets().size()); for (Terms.Bucket bucket : infos.getBuckets()) { InternalReverseNested reverseNested = bucket.getAggregations().get("someAlias@NESTED"); InternalHistogram histogram = reverseNested.getAggregations().get("someAlias"); Assert.assertEquals(2, histogram.getBuckets().size()); } }
@Test public void histogramOnNestedField() throws Exception { Aggregations result = query( String.format( "select count(*) from %s/nestedType group by histogram('field'='message.dayOfWeek','nested'='message','interval'='2' , 'alias' = 'someAlias' )", TEST_INDEX)); InternalNested nested = result.get("message@NESTED"); Histogram histogram = nested.getAggregations().get("someAlias"); for (Histogram.Bucket bucket : histogram.getBuckets()) { long count = ((ValueCount) bucket.getAggregations().get("COUNT(*)")).getValue(); if (bucket.getKey().equals("0") || bucket.getKey().equals("4")) { Assert.assertEquals(2, count); } else if (bucket.getKey().equals("2")) { Assert.assertEquals(1, count); } else { Assert.assertTrue("only 0 2 4 keys are allowed got:" + bucket.getKey(), false); } } }
@Test public void groupByOnNestedFieldWithFilterTest() throws Exception { Aggregations result = query( String.format( "SELECT COUNT(*) FROM %s/nestedType GROUP BY nested(message.info),filter('myFilter',message.info = 'a')", TEST_INDEX)); InternalNested nested = result.get("message.info@NESTED"); InternalFilter filter = nested.getAggregations().get("myFilter@FILTER"); Terms infos = filter.getAggregations().get("message.info"); Assert.assertEquals(1, infos.getBuckets().size()); for (Terms.Bucket bucket : infos.getBuckets()) { String key = bucket.getKey(); long count = ((ValueCount) bucket.getAggregations().get("COUNT(*)")).getValue(); if (key.equalsIgnoreCase("a")) { Assert.assertEquals(2, count); } else { throw new Exception(String.format("Unexpected key. expected: only a . found: %s", key)); } } }