|
|
@@ -433,6 +433,102 @@ public class CompositeAggregatorTests extends AggregatorTestCase {
|
|
|
);
|
|
|
}
|
|
|
|
|
|
+ public void testUnmappedFieldWithLongs() throws Exception {
|
|
|
+ final List<Map<String, List<Object>>> dataset = new ArrayList<>();
|
|
|
+ dataset.addAll(
|
|
|
+ Arrays.asList(
|
|
|
+ createDocument("long", 1L),
|
|
|
+ createDocument("long", 3L),
|
|
|
+ createDocument("long", 1L),
|
|
|
+ createDocument("long", 4L),
|
|
|
+ createDocument("long", 3L)
|
|
|
+ )
|
|
|
+ );
|
|
|
+
|
|
|
+ testSearchCase(Arrays.asList(new MatchAllDocsQuery(), new DocValuesFieldExistsQuery("long")), dataset,
|
|
|
+ () -> new CompositeAggregationBuilder("name",
|
|
|
+ Arrays.asList(
|
|
|
+ new TermsValuesSourceBuilder("unmapped").field("unmapped")
|
|
|
+ )
|
|
|
+ ),
|
|
|
+ (result) -> {
|
|
|
+ assertEquals(0, result.getBuckets().size());
|
|
|
+ }
|
|
|
+ );
|
|
|
+
|
|
|
+ testSearchCase(Arrays.asList(new MatchAllDocsQuery(), new DocValuesFieldExistsQuery("long")), dataset,
|
|
|
+ () -> new CompositeAggregationBuilder("name",
|
|
|
+ Arrays.asList(
|
|
|
+ new TermsValuesSourceBuilder("unmapped").field("unmapped").missingBucket(true)
|
|
|
+ )
|
|
|
+ ),
|
|
|
+ (result) -> {
|
|
|
+ assertEquals(1, result.getBuckets().size());
|
|
|
+ assertEquals("{unmapped=null}", result.afterKey().toString());
|
|
|
+ assertEquals("{unmapped=null}", result.getBuckets().get(0).getKeyAsString());
|
|
|
+ assertEquals(5L, result.getBuckets().get(0).getDocCount());
|
|
|
+ }
|
|
|
+ );
|
|
|
+
|
|
|
+ testSearchCase(Arrays.asList(new MatchAllDocsQuery(), new DocValuesFieldExistsQuery("long")), dataset,
|
|
|
+ () -> new CompositeAggregationBuilder("name",
|
|
|
+ Arrays.asList(
|
|
|
+ new TermsValuesSourceBuilder("unmapped").field("unmapped").missingBucket(true)
|
|
|
+ )).aggregateAfter(Collections.singletonMap("unmapped", null)),
|
|
|
+ (result) -> {
|
|
|
+ assertEquals(0, result.getBuckets().size());
|
|
|
+ }
|
|
|
+ );
|
|
|
+
|
|
|
+ testSearchCase(Arrays.asList(new MatchAllDocsQuery(), new DocValuesFieldExistsQuery("long")), dataset,
|
|
|
+ () -> new CompositeAggregationBuilder("name",
|
|
|
+ Arrays.asList(
|
|
|
+ new TermsValuesSourceBuilder("long").field("long"),
|
|
|
+ new TermsValuesSourceBuilder("unmapped").field("unmapped")
|
|
|
+ )
|
|
|
+ ),
|
|
|
+ (result) -> {
|
|
|
+ assertEquals(0, result.getBuckets().size());
|
|
|
+ }
|
|
|
+ );
|
|
|
+
|
|
|
+ testSearchCase(Arrays.asList(new MatchAllDocsQuery(), new DocValuesFieldExistsQuery("long")), dataset,
|
|
|
+ () -> new CompositeAggregationBuilder("name",
|
|
|
+ Arrays.asList(
|
|
|
+ new TermsValuesSourceBuilder("long").field("long"),
|
|
|
+ new TermsValuesSourceBuilder("unmapped").field("unmapped").missingBucket(true)
|
|
|
+ )
|
|
|
+ ),
|
|
|
+ (result) -> {
|
|
|
+ assertEquals(3, result.getBuckets().size());
|
|
|
+ assertEquals("{long=4, unmapped=null}", result.afterKey().toString());
|
|
|
+ assertEquals("{long=1, unmapped=null}", result.getBuckets().get(0).getKeyAsString());
|
|
|
+ assertEquals(2L, result.getBuckets().get(0).getDocCount());
|
|
|
+ assertEquals("{long=3, unmapped=null}", result.getBuckets().get(1).getKeyAsString());
|
|
|
+ assertEquals(2L, result.getBuckets().get(1).getDocCount());
|
|
|
+ assertEquals("{long=4, unmapped=null}", result.getBuckets().get(2).getKeyAsString());
|
|
|
+ assertEquals(1L, result.getBuckets().get(2).getDocCount());
|
|
|
+ }
|
|
|
+ );
|
|
|
+
|
|
|
+ testSearchCase(Arrays.asList(new MatchAllDocsQuery(), new DocValuesFieldExistsQuery("long")), dataset,
|
|
|
+ () -> new CompositeAggregationBuilder("name",
|
|
|
+ Arrays.asList(
|
|
|
+ new TermsValuesSourceBuilder("long").field("long"),
|
|
|
+ new TermsValuesSourceBuilder("unmapped").field("unmapped").missingBucket(true)
|
|
|
+ )
|
|
|
+ ).aggregateAfter(Map.of("long", 1, "unmapped", randomFrom(randomBoolean(), 1, "b"))),
|
|
|
+ (result) -> {
|
|
|
+ assertEquals(2, result.getBuckets().size());
|
|
|
+ assertEquals("{long=4, unmapped=null}", result.afterKey().toString());
|
|
|
+ assertEquals("{long=3, unmapped=null}", result.getBuckets().get(0).getKeyAsString());
|
|
|
+ assertEquals(2L, result.getBuckets().get(0).getDocCount());
|
|
|
+ assertEquals("{long=4, unmapped=null}", result.getBuckets().get(1).getKeyAsString());
|
|
|
+ assertEquals(1L, result.getBuckets().get(1).getDocCount());
|
|
|
+ }
|
|
|
+ );
|
|
|
+ }
|
|
|
+
|
|
|
public void testWithKeyword() throws Exception {
|
|
|
final List<Map<String, List<Object>>> dataset = new ArrayList<>();
|
|
|
dataset.addAll(
|