Example usage for org.apache.lucene.search DocValuesFieldExistsQuery DocValuesFieldExistsQuery

List of usage examples for org.apache.lucene.search DocValuesFieldExistsQuery DocValuesFieldExistsQuery

Introduction

In this page you can find the example usage for org.apache.lucene.search DocValuesFieldExistsQuery DocValuesFieldExistsQuery.

Prototype

public DocValuesFieldExistsQuery(String field) 

Source Link

Document

Create a query that will match that have a value for the given field .

Usage

From source file:org.apache.solr.schema.CurrencyFieldType.java

License:Apache License

public Query getRangeQuery(QParser parser, SchemaField field, final CurrencyValue p1, final CurrencyValue p2,
        final boolean minInclusive, final boolean maxInclusive) {
    String currencyCode = (p1 != null) ? p1.getCurrencyCode()
            : (p2 != null) ? p2.getCurrencyCode() : defaultCurrency;

    // ValueSourceRangeFilter doesn't check exists(), so we have to
    final Filter docsWithValues = new QueryWrapperFilter(
            new DocValuesFieldExistsQuery(getAmountField(field).getName()));
    final Filter vsRangeFilter = new ValueSourceRangeFilter(
            new RawCurrencyValueSource(field, currencyCode, parser), p1 == null ? null : p1.getAmount() + "",
            p2 == null ? null : p2.getAmount() + "", minInclusive, maxInclusive);
    final BooleanQuery.Builder docsInRange = new BooleanQuery.Builder();
    docsInRange.add(docsWithValues, Occur.FILTER);
    docsInRange.add(vsRangeFilter, Occur.FILTER);

    return new SolrConstantScoreQuery(new QueryWrapperFilter(docsInRange.build()));
}

From source file:org.elasticsearch.common.lucene.search.QueriesTests.java

License:Apache License

public void testNonNestedQuery() {
    for (Version version : VersionUtils.allVersions()) {
        // This is a custom query that extends AutomatonQuery and want to make sure the equals method works
        assertEquals(Queries.newNonNestedFilter(version), Queries.newNonNestedFilter(version));
        assertEquals(Queries.newNonNestedFilter(version).hashCode(),
                Queries.newNonNestedFilter(version).hashCode());
        if (version.onOrAfter(Version.V_6_1_0)) {
            assertEquals(Queries.newNonNestedFilter(version),
                    new DocValuesFieldExistsQuery(SeqNoFieldMapper.PRIMARY_TERM_NAME));
        } else {/*  w  ww . j av a 2 s .  c o  m*/
            assertEquals(Queries.newNonNestedFilter(version),
                    new BooleanQuery.Builder().add(new MatchAllDocsQuery(), BooleanClause.Occur.FILTER)
                            .add(Queries.newNestedFilter(), BooleanClause.Occur.MUST_NOT).build());
        }
    }
}

From source file:org.elasticsearch.search.aggregations.bucket.composite.CompositeAggregatorTests.java

License:Apache License

public void testWithKeyword() throws Exception {
    final List<Map<String, List<Object>>> dataset = new ArrayList<>();
    dataset.addAll(Arrays.asList(createDocument("keyword", "a"), createDocument("keyword", "c"),
            createDocument("keyword", "a"), createDocument("keyword", "d"), createDocument("keyword", "c")));
    testSearchCase(Arrays.asList(new MatchAllDocsQuery(), new DocValuesFieldExistsQuery("keyword")), dataset,
            () -> {//from   w  w w. j av  a  2 s. c  om
                TermsValuesSourceBuilder terms = new TermsValuesSourceBuilder("keyword").field("keyword");
                return new CompositeAggregationBuilder("name", Collections.singletonList(terms));
            }, (result) -> {
                assertEquals(3, result.getBuckets().size());
                assertEquals("{keyword=d}", result.afterKey().toString());
                assertEquals("{keyword=a}", result.getBuckets().get(0).getKeyAsString());
                assertEquals(2L, result.getBuckets().get(0).getDocCount());
                assertEquals("{keyword=c}", result.getBuckets().get(1).getKeyAsString());
                assertEquals(2L, result.getBuckets().get(1).getDocCount());
                assertEquals("{keyword=d}", result.getBuckets().get(2).getKeyAsString());
                assertEquals(1L, result.getBuckets().get(2).getDocCount());
            });

    testSearchCase(Arrays.asList(new MatchAllDocsQuery(), new DocValuesFieldExistsQuery("keyword")), dataset,
            () -> {
                TermsValuesSourceBuilder terms = new TermsValuesSourceBuilder("keyword").field("keyword");
                return new CompositeAggregationBuilder("name", Collections.singletonList(terms))
                        .aggregateAfter(Collections.singletonMap("keyword", "a"));
            }, (result) -> {
                assertEquals(2, result.getBuckets().size());
                assertEquals("{keyword=d}", result.afterKey().toString());
                assertEquals("{keyword=c}", result.getBuckets().get(0).getKeyAsString());
                assertEquals(2L, result.getBuckets().get(0).getDocCount());
                assertEquals("{keyword=d}", result.getBuckets().get(1).getKeyAsString());
                assertEquals(1L, result.getBuckets().get(1).getDocCount());
            });
}

From source file:org.elasticsearch.search.aggregations.bucket.composite.CompositeAggregatorTests.java

License:Apache License

public void testWithKeywordMissingAfter() throws Exception {
    final List<Map<String, List<Object>>> dataset = new ArrayList<>();
    dataset.addAll(Arrays.asList(createDocument("keyword", "foo"), createDocument("keyword", "bar"),
            createDocument("keyword", "foo"), createDocument("keyword", "zoo"),
            createDocument("keyword", "bar"), createDocument("keyword", "delta")));
    testSearchCase(Arrays.asList(new MatchAllDocsQuery(), new DocValuesFieldExistsQuery("keyword")), dataset,
            () -> {//  w ww. j  a va  2 s.  c o m
                TermsValuesSourceBuilder terms = new TermsValuesSourceBuilder("keyword").field("keyword");
                return new CompositeAggregationBuilder("name", Collections.singletonList(terms));
            }, (result) -> {
                assertEquals(4, result.getBuckets().size());
                assertEquals("{keyword=zoo}", result.afterKey().toString());
                assertEquals("{keyword=bar}", result.getBuckets().get(0).getKeyAsString());
                assertEquals(2L, result.getBuckets().get(0).getDocCount());
                assertEquals("{keyword=delta}", result.getBuckets().get(1).getKeyAsString());
                assertEquals(1L, result.getBuckets().get(1).getDocCount());
                assertEquals("{keyword=foo}", result.getBuckets().get(2).getKeyAsString());
                assertEquals(2L, result.getBuckets().get(2).getDocCount());
                assertEquals("{keyword=zoo}", result.getBuckets().get(3).getKeyAsString());
                assertEquals(1L, result.getBuckets().get(3).getDocCount());
            });

    testSearchCase(Arrays.asList(new MatchAllDocsQuery(), new DocValuesFieldExistsQuery("keyword")), dataset,
            () -> {
                TermsValuesSourceBuilder terms = new TermsValuesSourceBuilder("keyword").field("keyword");
                return new CompositeAggregationBuilder("name", Collections.singletonList(terms))
                        .aggregateAfter(Collections.singletonMap("keyword", "car"));
            }, (result) -> {
                assertEquals(3, result.getBuckets().size());
                assertEquals("{keyword=zoo}", result.afterKey().toString());
                assertEquals("{keyword=delta}", result.getBuckets().get(0).getKeyAsString());
                assertEquals(1L, result.getBuckets().get(0).getDocCount());
                assertEquals("{keyword=foo}", result.getBuckets().get(1).getKeyAsString());
                assertEquals(2L, result.getBuckets().get(1).getDocCount());
                assertEquals("{keyword=zoo}", result.getBuckets().get(2).getKeyAsString());
                assertEquals(1L, result.getBuckets().get(2).getDocCount());
            });

    testSearchCase(Arrays.asList(new MatchAllDocsQuery(), new DocValuesFieldExistsQuery("keyword")), dataset,
            () -> {
                TermsValuesSourceBuilder terms = new TermsValuesSourceBuilder("keyword").field("keyword")
                        .order(SortOrder.DESC);
                return new CompositeAggregationBuilder("name", Collections.singletonList(terms))
                        .aggregateAfter(Collections.singletonMap("keyword", "mar"));
            }, (result) -> {
                assertEquals(3, result.getBuckets().size());
                assertEquals("{keyword=bar}", result.afterKey().toString());
                assertEquals("{keyword=foo}", result.getBuckets().get(0).getKeyAsString());
                assertEquals(2L, result.getBuckets().get(0).getDocCount());
                assertEquals("{keyword=delta}", result.getBuckets().get(1).getKeyAsString());
                assertEquals(1L, result.getBuckets().get(1).getDocCount());
                assertEquals("{keyword=bar}", result.getBuckets().get(2).getKeyAsString());
                assertEquals(2L, result.getBuckets().get(2).getDocCount());
            });
}

From source file:org.elasticsearch.search.aggregations.bucket.composite.CompositeAggregatorTests.java

License:Apache License

public void testWithKeywordDesc() throws Exception {
    final List<Map<String, List<Object>>> dataset = new ArrayList<>();
    dataset.addAll(Arrays.asList(createDocument("keyword", "a"), createDocument("keyword", "c"),
            createDocument("keyword", "a"), createDocument("keyword", "d"), createDocument("keyword", "c")));
    testSearchCase(Arrays.asList(new MatchAllDocsQuery(), new DocValuesFieldExistsQuery("keyword")), dataset,
            () -> {// ww w.j a  v  a 2  s.co m
                TermsValuesSourceBuilder terms = new TermsValuesSourceBuilder("keyword").field("keyword")
                        .order(SortOrder.DESC);
                return new CompositeAggregationBuilder("name", Collections.singletonList(terms));
            }, (result) -> {
                assertEquals(3, result.getBuckets().size());
                assertEquals("{keyword=a}", result.afterKey().toString());
                assertEquals("{keyword=a}", result.getBuckets().get(2).getKeyAsString());
                assertEquals(2L, result.getBuckets().get(2).getDocCount());
                assertEquals("{keyword=c}", result.getBuckets().get(1).getKeyAsString());
                assertEquals(2L, result.getBuckets().get(1).getDocCount());
                assertEquals("{keyword=d}", result.getBuckets().get(0).getKeyAsString());
                assertEquals(1L, result.getBuckets().get(0).getDocCount());
            });

    testSearchCase(Arrays.asList(new MatchAllDocsQuery(), new DocValuesFieldExistsQuery("keyword")), dataset,
            () -> {
                TermsValuesSourceBuilder terms = new TermsValuesSourceBuilder("keyword").field("keyword")
                        .order(SortOrder.DESC);
                return new CompositeAggregationBuilder("name", Collections.singletonList(terms))
                        .aggregateAfter(Collections.singletonMap("keyword", "c"));

            }, (result) -> {
                assertEquals(result.afterKey().toString(), "{keyword=a}");
                assertEquals("{keyword=a}", result.afterKey().toString());
                assertEquals(1, result.getBuckets().size());
                assertEquals("{keyword=a}", result.getBuckets().get(0).getKeyAsString());
                assertEquals(2L, result.getBuckets().get(0).getDocCount());
            });
}

From source file:org.elasticsearch.search.aggregations.bucket.composite.CompositeAggregatorTests.java

License:Apache License

public void testMultiValuedWithKeyword() throws Exception {
    final List<Map<String, List<Object>>> dataset = new ArrayList<>();
    dataset.addAll(Arrays.asList(createDocument("keyword", Arrays.asList("a", "b")),
            createDocument("keyword", Arrays.asList("c", "a")),
            createDocument("keyword", Arrays.asList("b", "d")), createDocument("keyword", Arrays.asList("z")),
            createDocument("keyword", Collections.emptyList())));

    testSearchCase(Arrays.asList(new MatchAllDocsQuery(), new DocValuesFieldExistsQuery("keyword")), dataset,
            () -> {//from   w w  w. j a  va2s.c o  m
                TermsValuesSourceBuilder terms = new TermsValuesSourceBuilder("keyword").field("keyword");
                return new CompositeAggregationBuilder("name", Collections.singletonList(terms));

            }, (result) -> {
                assertEquals(5, result.getBuckets().size());
                assertEquals("{keyword=z}", result.afterKey().toString());
                assertEquals("{keyword=a}", result.getBuckets().get(0).getKeyAsString());
                assertEquals(2L, result.getBuckets().get(0).getDocCount());
                assertEquals("{keyword=b}", result.getBuckets().get(1).getKeyAsString());
                assertEquals(2L, result.getBuckets().get(1).getDocCount());
                assertEquals("{keyword=c}", result.getBuckets().get(2).getKeyAsString());
                assertEquals(1L, result.getBuckets().get(2).getDocCount());
                assertEquals("{keyword=d}", result.getBuckets().get(3).getKeyAsString());
                assertEquals(1L, result.getBuckets().get(3).getDocCount());
                assertEquals("{keyword=z}", result.getBuckets().get(4).getKeyAsString());
                assertEquals(1L, result.getBuckets().get(4).getDocCount());
            });

    testSearchCase(Arrays.asList(new MatchAllDocsQuery(), new DocValuesFieldExistsQuery("keyword")), dataset,
            () -> {
                TermsValuesSourceBuilder terms = new TermsValuesSourceBuilder("keyword").field("keyword");
                return new CompositeAggregationBuilder("name", Collections.singletonList(terms))
                        .aggregateAfter(Collections.singletonMap("keyword", "b"));

            }, (result) -> {
                assertEquals(3, result.getBuckets().size());
                assertEquals("{keyword=z}", result.afterKey().toString());
                assertEquals("{keyword=c}", result.getBuckets().get(0).getKeyAsString());
                assertEquals(1L, result.getBuckets().get(0).getDocCount());
                assertEquals("{keyword=d}", result.getBuckets().get(1).getKeyAsString());
                assertEquals(1L, result.getBuckets().get(1).getDocCount());
                assertEquals("{keyword=z}", result.getBuckets().get(2).getKeyAsString());
                assertEquals(1L, result.getBuckets().get(2).getDocCount());
            });
}

From source file:org.elasticsearch.search.aggregations.bucket.composite.CompositeAggregatorTests.java

License:Apache License

public void testMultiValuedWithKeywordDesc() throws Exception {
    final List<Map<String, List<Object>>> dataset = new ArrayList<>();
    dataset.addAll(Arrays.asList(createDocument("keyword", Arrays.asList("a", "b")),
            createDocument("keyword", Arrays.asList("c", "a")),
            createDocument("keyword", Arrays.asList("b", "d")), createDocument("keyword", Arrays.asList("z")),
            createDocument("keyword", Collections.emptyList())));

    testSearchCase(Arrays.asList(new MatchAllDocsQuery(), new DocValuesFieldExistsQuery("keyword")), dataset,
            () -> {//from w w  w. j a  v a2 s.com
                TermsValuesSourceBuilder terms = new TermsValuesSourceBuilder("keyword").field("keyword")
                        .order(SortOrder.DESC);
                return new CompositeAggregationBuilder("name", Collections.singletonList(terms));

            }, (result) -> {
                assertEquals(5, result.getBuckets().size());
                assertEquals("{keyword=a}", result.afterKey().toString());
                assertEquals("{keyword=a}", result.getBuckets().get(4).getKeyAsString());
                assertEquals(2L, result.getBuckets().get(4).getDocCount());
                assertEquals("{keyword=b}", result.getBuckets().get(3).getKeyAsString());
                assertEquals(2L, result.getBuckets().get(3).getDocCount());
                assertEquals("{keyword=c}", result.getBuckets().get(2).getKeyAsString());
                assertEquals(1L, result.getBuckets().get(2).getDocCount());
                assertEquals("{keyword=d}", result.getBuckets().get(1).getKeyAsString());
                assertEquals(1L, result.getBuckets().get(1).getDocCount());
                assertEquals("{keyword=z}", result.getBuckets().get(0).getKeyAsString());
                assertEquals(1L, result.getBuckets().get(0).getDocCount());
            });

    testSearchCase(Arrays.asList(new MatchAllDocsQuery(), new DocValuesFieldExistsQuery("keyword")), dataset,
            () -> {
                TermsValuesSourceBuilder terms = new TermsValuesSourceBuilder("keyword").field("keyword")
                        .order(SortOrder.DESC);
                return new CompositeAggregationBuilder("name", Collections.singletonList(terms))
                        .aggregateAfter(Collections.singletonMap("keyword", "c"));

            }, (result) -> {
                assertEquals(2, result.getBuckets().size());
                assertEquals("{keyword=a}", result.afterKey().toString());
                assertEquals("{keyword=a}", result.getBuckets().get(1).getKeyAsString());
                assertEquals(2L, result.getBuckets().get(1).getDocCount());
                assertEquals("{keyword=b}", result.getBuckets().get(0).getKeyAsString());
                assertEquals(2L, result.getBuckets().get(1).getDocCount());
            });
}

From source file:org.elasticsearch.search.aggregations.bucket.composite.CompositeAggregatorTests.java

License:Apache License

public void testWithKeywordAndLong() throws Exception {
    final List<Map<String, List<Object>>> dataset = new ArrayList<>();
    dataset.addAll(Arrays.asList(createDocument("keyword", "a", "long", 100L),
            createDocument("keyword", "c", "long", 100L), createDocument("keyword", "a", "long", 0L),
            createDocument("keyword", "d", "long", 10L), createDocument("keyword", "c"),
            createDocument("keyword", "c", "long", 100L), createDocument("long", 100L)));
    testSearchCase(Arrays.asList(new MatchAllDocsQuery(), new DocValuesFieldExistsQuery("keyword")), dataset,
            () -> new CompositeAggregationBuilder("name",
                    Arrays.asList(new TermsValuesSourceBuilder("keyword").field("keyword"),
                            new TermsValuesSourceBuilder("long").field("long"))),
            (result) -> {// ww w . j av a  2s.  co  m
                assertEquals(4, result.getBuckets().size());
                assertEquals("{keyword=d, long=10}", result.afterKey().toString());
                assertEquals("{keyword=a, long=0}", result.getBuckets().get(0).getKeyAsString());
                assertEquals(1L, result.getBuckets().get(0).getDocCount());
                assertEquals("{keyword=a, long=100}", result.getBuckets().get(1).getKeyAsString());
                assertEquals(1L, result.getBuckets().get(1).getDocCount());
                assertEquals("{keyword=c, long=100}", result.getBuckets().get(2).getKeyAsString());
                assertEquals(2L, result.getBuckets().get(2).getDocCount());
                assertEquals("{keyword=d, long=10}", result.getBuckets().get(3).getKeyAsString());
                assertEquals(1L, result.getBuckets().get(3).getDocCount());
            });

    testSearchCase(Arrays.asList(new MatchAllDocsQuery(), new DocValuesFieldExistsQuery("keyword")), dataset,
            () -> new CompositeAggregationBuilder("name",
                    Arrays.asList(new TermsValuesSourceBuilder("keyword").field("keyword"),
                            new TermsValuesSourceBuilder("long").field("long")))
                                    .aggregateAfter(createAfterKey("keyword", "a", "long", 100L)),
            (result) -> {
                assertEquals(2, result.getBuckets().size());
                assertEquals("{keyword=d, long=10}", result.afterKey().toString());
                assertEquals("{keyword=c, long=100}", result.getBuckets().get(0).getKeyAsString());
                assertEquals(2L, result.getBuckets().get(0).getDocCount());
                assertEquals("{keyword=d, long=10}", result.getBuckets().get(1).getKeyAsString());
                assertEquals(1L, result.getBuckets().get(1).getDocCount());
            });
}

From source file:org.elasticsearch.search.aggregations.bucket.composite.CompositeAggregatorTests.java

License:Apache License

public void testWithKeywordAndLongDesc() throws Exception {
    final List<Map<String, List<Object>>> dataset = new ArrayList<>();
    dataset.addAll(Arrays.asList(createDocument("keyword", "a", "long", 100L),
            createDocument("keyword", "c", "long", 100L), createDocument("keyword", "a", "long", 0L),
            createDocument("keyword", "d", "long", 10L), createDocument("keyword", "c"),
            createDocument("keyword", "c", "long", 100L), createDocument("long", 100L)));
    testSearchCase(Arrays.asList(new MatchAllDocsQuery(), new DocValuesFieldExistsQuery("keyword")), dataset,
            () -> new CompositeAggregationBuilder("name",
                    Arrays.asList(
                            new TermsValuesSourceBuilder("keyword").field("keyword").order(SortOrder.DESC),
                            new TermsValuesSourceBuilder("long").field("long").order(SortOrder.DESC))),
            (result) -> {/*from ww  w  .  j a va 2s . c o  m*/
                assertEquals(4, result.getBuckets().size());
                assertEquals("{keyword=a, long=0}", result.afterKey().toString());
                assertEquals("{keyword=a, long=0}", result.getBuckets().get(3).getKeyAsString());
                assertEquals(1L, result.getBuckets().get(3).getDocCount());
                assertEquals("{keyword=a, long=100}", result.getBuckets().get(2).getKeyAsString());
                assertEquals(1L, result.getBuckets().get(2).getDocCount());
                assertEquals("{keyword=c, long=100}", result.getBuckets().get(1).getKeyAsString());
                assertEquals(2L, result.getBuckets().get(1).getDocCount());
                assertEquals("{keyword=d, long=10}", result.getBuckets().get(0).getKeyAsString());
                assertEquals(1L, result.getBuckets().get(0).getDocCount());
            });

    testSearchCase(Arrays.asList(new MatchAllDocsQuery(), new DocValuesFieldExistsQuery("keyword")), dataset,
            () -> new CompositeAggregationBuilder("name",
                    Arrays.asList(
                            new TermsValuesSourceBuilder("keyword").field("keyword").order(SortOrder.DESC),
                            new TermsValuesSourceBuilder("long").field("long").order(SortOrder.DESC)))
                                    .aggregateAfter(createAfterKey("keyword", "d", "long", 10L)),
            (result) -> {
                assertEquals(3, result.getBuckets().size());
                assertEquals("{keyword=a, long=0}", result.afterKey().toString());
                assertEquals("{keyword=a, long=0}", result.getBuckets().get(2).getKeyAsString());
                assertEquals(1L, result.getBuckets().get(2).getDocCount());
                assertEquals("{keyword=a, long=100}", result.getBuckets().get(1).getKeyAsString());
                assertEquals(1L, result.getBuckets().get(1).getDocCount());
                assertEquals("{keyword=c, long=100}", result.getBuckets().get(0).getKeyAsString());
                assertEquals(2L, result.getBuckets().get(0).getDocCount());
            });
}

From source file:org.elasticsearch.search.aggregations.bucket.composite.CompositeAggregatorTests.java

License:Apache License

public void testMultiValuedWithKeywordAndLong() throws Exception {
    final List<Map<String, List<Object>>> dataset = new ArrayList<>();
    dataset.addAll(Arrays.asList(createDocument("keyword", Arrays.asList("a", "b", "c"), "long", 100L),
            createDocument("keyword", "c", "long", Arrays.asList(100L, 0L, 10L)),
            createDocument("keyword", Arrays.asList("a", "z"), "long", Arrays.asList(0L, 100L)),
            createDocument("keyword", Arrays.asList("d", "d"), "long", Arrays.asList(10L, 100L, 1000L)),
            createDocument("keyword", "c"), createDocument("long", 100L)));

    testSearchCase(Arrays.asList(new MatchAllDocsQuery(), new DocValuesFieldExistsQuery("keyword")), dataset,
            () -> new CompositeAggregationBuilder("name",
                    Arrays.asList(new TermsValuesSourceBuilder("keyword").field("keyword"),
                            new TermsValuesSourceBuilder("long").field("long"))),
            (result) -> {/*www. ja va2  s.c  om*/
                assertEquals(10, result.getBuckets().size());
                assertEquals("{keyword=z, long=0}", result.afterKey().toString());
                assertEquals("{keyword=a, long=0}", result.getBuckets().get(0).getKeyAsString());
                assertEquals(1L, result.getBuckets().get(0).getDocCount());
                assertEquals("{keyword=a, long=100}", result.getBuckets().get(1).getKeyAsString());
                assertEquals(2L, result.getBuckets().get(1).getDocCount());
                assertEquals("{keyword=b, long=100}", result.getBuckets().get(2).getKeyAsString());
                assertEquals(1L, result.getBuckets().get(2).getDocCount());
                assertEquals("{keyword=c, long=0}", result.getBuckets().get(3).getKeyAsString());
                assertEquals(1L, result.getBuckets().get(3).getDocCount());
                assertEquals("{keyword=c, long=10}", result.getBuckets().get(4).getKeyAsString());
                assertEquals(1L, result.getBuckets().get(4).getDocCount());
                assertEquals("{keyword=c, long=100}", result.getBuckets().get(5).getKeyAsString());
                assertEquals(2L, result.getBuckets().get(5).getDocCount());
                assertEquals("{keyword=d, long=10}", result.getBuckets().get(6).getKeyAsString());
                assertEquals(1L, result.getBuckets().get(6).getDocCount());
                assertEquals("{keyword=d, long=100}", result.getBuckets().get(7).getKeyAsString());
                assertEquals(1L, result.getBuckets().get(7).getDocCount());
                assertEquals("{keyword=d, long=1000}", result.getBuckets().get(8).getKeyAsString());
                assertEquals(1L, result.getBuckets().get(8).getDocCount());
                assertEquals("{keyword=z, long=0}", result.getBuckets().get(9).getKeyAsString());
                assertEquals(1L, result.getBuckets().get(9).getDocCount());
            });

    testSearchCase(Arrays.asList(new MatchAllDocsQuery(), new DocValuesFieldExistsQuery("keyword")), dataset,
            () -> new CompositeAggregationBuilder("name",
                    Arrays.asList(new TermsValuesSourceBuilder("keyword").field("keyword"),
                            new TermsValuesSourceBuilder("long").field("long")))
                                    .aggregateAfter(createAfterKey("keyword", "c", "long", 10L)),
            (result) -> {
                assertEquals(6, result.getBuckets().size());
                assertEquals("{keyword=z, long=100}", result.afterKey().toString());
                assertEquals("{keyword=c, long=100}", result.getBuckets().get(0).getKeyAsString());
                assertEquals(2L, result.getBuckets().get(0).getDocCount());
                assertEquals("{keyword=d, long=10}", result.getBuckets().get(1).getKeyAsString());
                assertEquals(1L, result.getBuckets().get(1).getDocCount());
                assertEquals("{keyword=d, long=100}", result.getBuckets().get(2).getKeyAsString());
                assertEquals(1L, result.getBuckets().get(2).getDocCount());
                assertEquals("{keyword=d, long=1000}", result.getBuckets().get(3).getKeyAsString());
                assertEquals(1L, result.getBuckets().get(3).getDocCount());
                assertEquals("{keyword=z, long=0}", result.getBuckets().get(4).getKeyAsString());
                assertEquals(1L, result.getBuckets().get(4).getDocCount());
                assertEquals("{keyword=z, long=100}", result.getBuckets().get(5).getKeyAsString());
                assertEquals(1L, result.getBuckets().get(5).getDocCount());
            });
}