diff --git a/server/src/main/java/org/opensearch/search/aggregations/bucket/nested/NestedAggregationBuilder.java b/server/src/main/java/org/opensearch/search/aggregations/bucket/nested/NestedAggregationBuilder.java index cb0e96e2a8101..edddf589e2b0d 100644 --- a/server/src/main/java/org/opensearch/search/aggregations/bucket/nested/NestedAggregationBuilder.java +++ b/server/src/main/java/org/opensearch/search/aggregations/bucket/nested/NestedAggregationBuilder.java @@ -123,14 +123,7 @@ protected AggregatorFactory doBuild(QueryShardContext queryShardContext, Aggrega } try { queryShardContext.nestedScope().nextLevel(childObjectMapper); - return new NestedAggregatorFactory( - name, - childObjectMapper, - queryShardContext, - parent, - subFactoriesBuilder, - metadata - ); + return new NestedAggregatorFactory(name, childObjectMapper, queryShardContext, parent, subFactoriesBuilder, metadata); } finally { queryShardContext.nestedScope().previousLevel(); } diff --git a/server/src/main/java/org/opensearch/search/aggregations/bucket/nested/NestedAggregator.java b/server/src/main/java/org/opensearch/search/aggregations/bucket/nested/NestedAggregator.java index 6737a21feacbe..2e1a0a4f2363f 100644 --- a/server/src/main/java/org/opensearch/search/aggregations/bucket/nested/NestedAggregator.java +++ b/server/src/main/java/org/opensearch/search/aggregations/bucket/nested/NestedAggregator.java @@ -126,8 +126,7 @@ public void collect(int parentDoc, long bucket) throws IOException { } } - static Tuple getChildAndRootParent(BitSet parentDocs, DocIdSetIterator childDocs, int parentDoc - ) throws IOException { + static Tuple getChildAndRootParent(BitSet parentDocs, DocIdSetIterator childDocs, int parentDoc) throws IOException { int currentRootDoc; int prevParentDoc = parentDocs.prevSetBit(parentDoc); if (prevParentDoc == -1) { diff --git a/server/src/test/java/org/opensearch/search/aggregations/bucket/nested/NestedAggregatorTests.java b/server/src/test/java/org/opensearch/search/aggregations/bucket/nested/NestedAggregatorTests.java index 1207f2dfd684b..65de1288d857a 100644 --- a/server/src/test/java/org/opensearch/search/aggregations/bucket/nested/NestedAggregatorTests.java +++ b/server/src/test/java/org/opensearch/search/aggregations/bucket/nested/NestedAggregatorTests.java @@ -55,7 +55,6 @@ import org.apache.lucene.util.BitSet; import org.apache.lucene.util.BytesRef; import org.apache.lucene.util.FixedBitSet; -import org.mockito.Mockito; import org.opensearch.common.CheckedConsumer; import org.opensearch.common.collect.Tuple; import org.opensearch.common.lucene.search.Queries; @@ -119,17 +118,19 @@ import java.util.stream.DoubleStream; import java.util.stream.LongStream; +import org.mockito.Mockito; + import static java.util.stream.Collectors.toList; -import static org.mockito.ArgumentMatchers.any; -import static org.mockito.ArgumentMatchers.anyString; -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.when; import static org.opensearch.common.lucene.search.Queries.newNonNestedFilter; import static org.opensearch.search.aggregations.AggregationBuilders.max; import static org.opensearch.search.aggregations.AggregationBuilders.nested; -import static org.hamcrest.Matchers.equalTo; import static org.opensearch.search.aggregations.bucket.nested.NestedAggregator.getChildAndRootParent; import static org.opensearch.test.InternalAggregationTestCase.DEFAULT_MAX_BUCKETS; +import static org.hamcrest.Matchers.equalTo; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.anyString; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; public class NestedAggregatorTests extends AggregatorTestCase { @@ -230,8 +231,10 @@ public void testSingleNestingMax() throws IOException { NestedAggregationBuilder nestedBuilder = new NestedAggregationBuilder(NESTED_AGG, NESTED_OBJECT); MaxAggregationBuilder maxAgg = new MaxAggregationBuilder(MAX_AGG_NAME).field(NESTED_OBJECT + "." + VALUE_FIELD_NAME); nestedBuilder.subAggregation(maxAgg); - MappedFieldType fieldType = new NumberFieldMapper.NumberFieldType(NESTED_OBJECT + "." + VALUE_FIELD_NAME, - NumberFieldMapper.NumberType.LONG); + MappedFieldType fieldType = new NumberFieldMapper.NumberFieldType( + NESTED_OBJECT + "." + VALUE_FIELD_NAME, + NumberFieldMapper.NumberType.LONG + ); InternalNested nested = searchAndReduce( createIndexSettings(), @@ -284,11 +287,13 @@ public void testDoubleNestingMax() throws IOException { } try (IndexReader indexReader = wrapInMockESDirectoryReader(DirectoryReader.open(directory))) { NestedAggregationBuilder nestedBuilder = new NestedAggregationBuilder(NESTED_AGG, NESTED_OBJECT); - MaxAggregationBuilder maxAgg = new MaxAggregationBuilder(MAX_AGG_NAME).field(NESTED_OBJECT+ "." + VALUE_FIELD_NAME); + MaxAggregationBuilder maxAgg = new MaxAggregationBuilder(MAX_AGG_NAME).field(NESTED_OBJECT + "." + VALUE_FIELD_NAME); nestedBuilder.subAggregation(maxAgg); - MappedFieldType fieldType = new NumberFieldMapper.NumberFieldType(NESTED_OBJECT+ "." + VALUE_FIELD_NAME, - NumberFieldMapper.NumberType.LONG); + MappedFieldType fieldType = new NumberFieldMapper.NumberFieldType( + NESTED_OBJECT + "." + VALUE_FIELD_NAME, + NumberFieldMapper.NumberType.LONG + ); InternalNested nested = searchAndReduce( createIndexSettings(), @@ -345,7 +350,10 @@ public void testOrphanedDocs() throws IOException { NestedAggregationBuilder nestedBuilder = new NestedAggregationBuilder(NESTED_AGG, NESTED_OBJECT); SumAggregationBuilder sumAgg = new SumAggregationBuilder(SUM_AGG_NAME).field(NESTED_OBJECT + "." + VALUE_FIELD_NAME); nestedBuilder.subAggregation(sumAgg); - MappedFieldType fieldType = new NumberFieldMapper.NumberFieldType(NESTED_OBJECT + "." + VALUE_FIELD_NAME, NumberFieldMapper.NumberType.LONG); + MappedFieldType fieldType = new NumberFieldMapper.NumberFieldType( + NESTED_OBJECT + "." + VALUE_FIELD_NAME, + NumberFieldMapper.NumberType.LONG + ); InternalNested nested = searchAndReduce( createIndexSettings(), @@ -782,9 +790,15 @@ public void testFieldAlias() throws IOException { max(MAX_AGG_NAME).field(VALUE_FIELD_NAME + "-alias") ); - InternalNested nested = searchAndReduce(createIndexSettings(), - newSearcher(indexReader, false, true), new MatchAllDocsQuery(), agg, - DEFAULT_MAX_BUCKETS,true, fieldType); + InternalNested nested = searchAndReduce( + createIndexSettings(), + newSearcher(indexReader, false, true), + new MatchAllDocsQuery(), + agg, + DEFAULT_MAX_BUCKETS, + true, + fieldType + ); Nested aliasNested = searchAndReduce( createIndexSettings(), newSearcher(indexReader, false, true), @@ -792,7 +806,8 @@ public void testFieldAlias() throws IOException { aliasAgg, DEFAULT_MAX_BUCKETS, true, - fieldType); + fieldType + ); assertEquals(nested, aliasNested); assertEquals(expectedNestedDocs, nested.getDocCount()); @@ -925,32 +940,38 @@ public void testBufferingNestedLeafBucketCollector() throws IOException { } try (IndexReader indexReader = wrapInMockESDirectoryReader(DirectoryReader.open(directory))) { IndexSettings indexSettings = createIndexSettings(); - MappedFieldType fieldType = new NumberFieldMapper.NumberFieldType(NESTED_OBJECT + "." +VALUE_FIELD_NAME, NumberFieldMapper.NumberType.LONG); - MappedFieldType fieldType1 = new NumberFieldMapper.NumberFieldType(NESTED_OBJECT2 + "." + VALUE_FIELD_NAME2, NumberFieldMapper.NumberType.LONG); + MappedFieldType fieldType = new NumberFieldMapper.NumberFieldType( + NESTED_OBJECT + "." + VALUE_FIELD_NAME, + NumberFieldMapper.NumberType.LONG + ); + MappedFieldType fieldType1 = new NumberFieldMapper.NumberFieldType( + NESTED_OBJECT2 + "." + VALUE_FIELD_NAME2, + NumberFieldMapper.NumberType.LONG + ); QueryShardContext queryShardContext = createQueryShardContext(NESTED_OBJECT2, indexSettings, fieldType1); // query - expectedNestedDocs = numRootDocs/2; + expectedNestedDocs = numRootDocs / 2; bucketKeys = new String[expectedNestedDocs]; - BytesRef [] values = new BytesRef[numRootDocs/2]; - for (int i = 0; i < numRootDocs/2; i++) { - bucketKeys[i] = "" + (i * 2); + BytesRef[] values = new BytesRef[numRootDocs / 2]; + for (int i = 0; i < numRootDocs / 2; i++) { + bucketKeys[i] = "" + (i * 2); values[i] = new BytesRef(bucketKeys[i]); } - TermsQueryBuilder termsQueryBuilder = new TermsQueryBuilder(NESTED_OBJECT2 + "." + VALUE_FIELD_NAME2, (Object[])values); + TermsQueryBuilder termsQueryBuilder = new TermsQueryBuilder(NESTED_OBJECT2 + "." + VALUE_FIELD_NAME2, (Object[]) values); NestedQueryBuilder nestedQueryBuilder = new NestedQueryBuilder(NESTED_OBJECT2, termsQueryBuilder, ScoreMode.None); - //out nested aggs + // out nested aggs NestedAggregationBuilder outNestedBuilder = new NestedAggregationBuilder(OUT_NESTED, NESTED_OBJECT); - TermsAggregationBuilder outTermsAggregator = new TermsAggregationBuilder(OUT_TERMS) - .field(NESTED_OBJECT + "." + VALUE_FIELD_NAME) - .size(100); + TermsAggregationBuilder outTermsAggregator = new TermsAggregationBuilder(OUT_TERMS).field( + NESTED_OBJECT + "." + VALUE_FIELD_NAME + ).size(100); outNestedBuilder.subAggregation(outTermsAggregator); - //inner nested aggs + // inner nested aggs NestedAggregationBuilder innerNestedBuilder = new NestedAggregationBuilder(INNER_NESTED, NESTED_OBJECT2); - TermsAggregationBuilder innerTermsAggregator = new TermsAggregationBuilder(INNER_TERMS) - .field(NESTED_OBJECT2 + "." + VALUE_FIELD_NAME2) - .size(100); + TermsAggregationBuilder innerTermsAggregator = new TermsAggregationBuilder(INNER_TERMS).field( + NESTED_OBJECT2 + "." + VALUE_FIELD_NAME2 + ).size(100); innerNestedBuilder.subAggregation(innerTermsAggregator); outTermsAggregator.subAggregation(innerNestedBuilder); @@ -962,7 +983,8 @@ public void testBufferingNestedLeafBucketCollector() throws IOException { DEFAULT_MAX_BUCKETS, true, fieldType, - fieldType1); + fieldType1 + ); assertEquals(OUT_NESTED, nested.getName()); assertEquals(expectedNestedDocs, nested.getDocCount()); @@ -970,12 +992,12 @@ public void testBufferingNestedLeafBucketCollector() throws IOException { LongTerms outTerms = (LongTerms) nested.getProperty(OUT_TERMS); assertEquals(1, outTerms.getBuckets().size()); - InternalNested internalNested = (InternalNested) (((Object[])outTerms.getProperty(INNER_NESTED))[0]); + InternalNested internalNested = (InternalNested) (((Object[]) outTerms.getProperty(INNER_NESTED))[0]); assertEquals(expectedNestedDocs, internalNested.getDocCount()); LongTerms innerTerms = (LongTerms) internalNested.getProperty(INNER_TERMS); assertEquals(bucketKeys.length, innerTerms.getBuckets().size()); - for (int i = 0; i bits.length || bits[index] != 1) { @@ -1032,14 +1055,14 @@ public long cost() { public void testGetChildAndRootParent() throws IOException { { - // p: parent c: child + // p: parent c: child // [p1], [c2,p3], [c4,p6] [p8] BitSet parentDocs = new FixedBitSet(20); parentDocs.set(0); parentDocs.set(3); parentDocs.set(6); parentDocs.set(8); - DocIdSetIterator childDocs = getDocIdSetIterator(new int[]{2,4}); + DocIdSetIterator childDocs = getDocIdSetIterator(new int[] { 2, 4 }); Tuple res = getChildAndRootParent(parentDocs, childDocs, 0); assertEquals(0, res.v1().intValue()); assertEquals(2, res.v2().intValue()); @@ -1058,14 +1081,14 @@ public void testGetChildAndRootParent() throws IOException { } { - // p: parent c: child1 d: child2 - // [c1,d2,p3], [d4,c5,p6], [c7,d8,p9] + // p: parent c: child1 d: child2 + // [c1,d2,p3], [d4,c5,p6], [c7,d8,p9] BitSet parentDocs = new FixedBitSet(20); parentDocs.set(3); parentDocs.set(6); parentDocs.set(9); { - DocIdSetIterator childDocs = getDocIdSetIterator(new int[]{1, 5, 7}); + DocIdSetIterator childDocs = getDocIdSetIterator(new int[] { 1, 5, 7 }); Tuple res = getChildAndRootParent(parentDocs, childDocs, 2); assertEquals(3, res.v1().intValue()); assertEquals(1, res.v2().intValue()); @@ -1080,7 +1103,7 @@ public void testGetChildAndRootParent() throws IOException { } { - DocIdSetIterator childDocs = getDocIdSetIterator(new int[]{1, 7}); + DocIdSetIterator childDocs = getDocIdSetIterator(new int[] { 1, 7 }); Tuple res = getChildAndRootParent(parentDocs, childDocs, 2); assertEquals(3, res.v1().intValue()); assertEquals(1, res.v2().intValue()); @@ -1150,15 +1173,14 @@ private static double[] generateDocuments(List documents, int numNeste document.add(new Field(IdFieldMapper.NAME, Uid.encodeId(Integer.toString(id)), IdFieldMapper.Defaults.NESTED_FIELD_TYPE)); document.add(new Field(NestedPathFieldMapper.NAME, path, NestedPathFieldMapper.Defaults.FIELD_TYPE)); long value = randomNonNegativeLong() % 10000; - document.add(new SortedNumericDocValuesField(path+ "." + fieldName, value)); + document.add(new SortedNumericDocValuesField(path + "." + fieldName, value)); documents.add(document); values[nested] = value; } return values; } - private static void generateDocument(List documents, int id, - String path, String fieldName, long vales ) { + private static void generateDocument(List documents, int id, String path, String fieldName, long vales) { Document document = new Document(); document.add(new Field(IdFieldMapper.NAME, Uid.encodeId(Integer.toString(id)), IdFieldMapper.Defaults.NESTED_FIELD_TYPE)); document.add(new Field(NestedPathFieldMapper.NAME, path, NestedPathFieldMapper.Defaults.FIELD_TYPE));