original.java
@Test
public void singleValueField_WithMaxSize() throws Exception {
    SearchResponse response = client().prepareSearch("idx").setTypes("high_card_type")
            .addAggregation(terms("terms")
                    .field("value")
                    .size(20)
                    .order(Terms.Order.TERM_ASC)) 
            .execute().actionGet();

    assertSearchResponse(response);


    Terms terms = response.getAggregations().get("terms");
    assertThat(terms, notNullValue());
    assertThat(terms.getName(), equalTo("terms"));
    assertThat(terms.buckets().size(), equalTo(20));

    for (int i = 0; i < 20; i++) {
        Terms.Bucket bucket = terms.getByTerm("" + i);
        assertThat(bucket, notNullValue());
        assertThat(bucket.getKey().string(), equalTo("" + i));
        assertThat(bucket.getKeyAsNumber().intValue(), equalTo(i));
        assertThat(bucket.getDocCount(), equalTo(1l));
    }
}}
modified.java
@Test
public void singleValueField_WithMaxSize() throws Exception {
    SearchResponse response = client().prepareSearch("idx").setTypes("high_card_type")
            .addAggregation(terms("terms")
                    .field("value")
                    .size(20)
                    .order(Terms.Order.term(true))) 
            .execute().actionGet();

    assertSearchResponse(response);


    Terms terms = response.getAggregations().get("terms");
    assertThat(terms, notNullValue());
    assertThat(terms.getName(), equalTo("terms"));
    assertThat(terms.buckets().size(), equalTo(20));

    for (int i = 0; i < 20; i++) {
        Terms.Bucket bucket = terms.getByTerm("" + i);
        assertThat(bucket, notNullValue());
        assertThat(bucket.getKey().string(), equalTo("" + i));
        assertThat(bucket.getKeyAsNumber().intValue(), equalTo(i));
        assertThat(bucket.getDocCount(), equalTo(1l));
    }
}}