fixed a bug where when executing on a single shard and sorting terms agg based on sub metric agg, the order (asc/desc) is not respected

- fixed tests for terms order

Closes #4951
This commit is contained in:
uboness 2014-01-30 06:01:00 +01:00
parent 4c06c533e8
commit 79d1633dd6
2 changed files with 18 additions and 14 deletions

View File

@ -215,7 +215,7 @@ class InternalOrder extends Terms.Order {
if (v1 == Double.NaN) { if (v1 == Double.NaN) {
return asc ? 1 : -1; return asc ? 1 : -1;
} }
return Double.compare(v1, v2); return asc ? Double.compare(v1, v2) : Double.compare(v2, v1);
} }
}; };
} }
@ -230,7 +230,7 @@ class InternalOrder extends Terms.Order {
if (v1 == Double.NaN) { if (v1 == Double.NaN) {
return asc ? 1 : -1; return asc ? 1 : -1;
} }
return Double.compare(v1, v2); return asc ? Double.compare(v1, v2) : Double.compare(v2, v1);
} }
}; };
} }

View File

@ -820,14 +820,15 @@ public class StringTermsTests extends ElasticsearchIntegrationTest {
assertThat(terms.getName(), equalTo("terms")); assertThat(terms.getName(), equalTo("terms"));
assertThat(terms.getBuckets().size(), equalTo(5)); assertThat(terms.getBuckets().size(), equalTo(5));
for (int i = 0; i < 5; i++) { int i = 0;
Terms.Bucket bucket = terms.getBucketByKey("val" + i); for (Terms.Bucket bucket : terms.getBuckets()) {
assertThat(bucket, notNullValue()); assertThat(bucket, notNullValue());
assertThat(key(bucket), equalTo("val" + i)); assertThat(key(bucket), equalTo("val" + i));
assertThat(bucket.getDocCount(), equalTo(1l)); assertThat(bucket.getDocCount(), equalTo(1l));
Avg avg = bucket.getAggregations().get("avg_i"); Avg avg = bucket.getAggregations().get("avg_i");
assertThat(avg, notNullValue()); assertThat(avg, notNullValue());
assertThat(avg.getValue(), equalTo((double) i)); assertThat(avg.getValue(), equalTo((double) i));
i++;
} }
} }
@ -931,9 +932,8 @@ public class StringTermsTests extends ElasticsearchIntegrationTest {
assertThat(terms.getName(), equalTo("terms")); assertThat(terms.getName(), equalTo("terms"));
assertThat(terms.getBuckets().size(), equalTo(5)); assertThat(terms.getBuckets().size(), equalTo(5));
for (int i = 4; i >= 0; i--) { int i = 4;
for (Terms.Bucket bucket : terms.getBuckets()) {
Terms.Bucket bucket = terms.getBucketByKey("val" + i);
assertThat(bucket, notNullValue()); assertThat(bucket, notNullValue());
assertThat(key(bucket), equalTo("val" + i)); assertThat(key(bucket), equalTo("val" + i));
assertThat(bucket.getDocCount(), equalTo(1l)); assertThat(bucket.getDocCount(), equalTo(1l));
@ -941,6 +941,7 @@ public class StringTermsTests extends ElasticsearchIntegrationTest {
Avg avg = bucket.getAggregations().get("avg_i"); Avg avg = bucket.getAggregations().get("avg_i");
assertThat(avg, notNullValue()); assertThat(avg, notNullValue());
assertThat(avg.getValue(), equalTo((double) i)); assertThat(avg.getValue(), equalTo((double) i));
i--;
} }
} }
@ -963,8 +964,8 @@ public class StringTermsTests extends ElasticsearchIntegrationTest {
assertThat(terms.getName(), equalTo("terms")); assertThat(terms.getName(), equalTo("terms"));
assertThat(terms.getBuckets().size(), equalTo(5)); assertThat(terms.getBuckets().size(), equalTo(5));
for (int i = 0; i < 5; i++) { int i = 0;
Terms.Bucket bucket = terms.getBucketByKey("val" + i); for (Terms.Bucket bucket : terms.getBuckets()) {
assertThat(bucket, notNullValue()); assertThat(bucket, notNullValue());
assertThat(key(bucket), equalTo("val" + i)); assertThat(key(bucket), equalTo("val" + i));
assertThat(bucket.getDocCount(), equalTo(1l)); assertThat(bucket.getDocCount(), equalTo(1l));
@ -972,6 +973,7 @@ public class StringTermsTests extends ElasticsearchIntegrationTest {
Stats stats = bucket.getAggregations().get("stats"); Stats stats = bucket.getAggregations().get("stats");
assertThat(stats, notNullValue()); assertThat(stats, notNullValue());
assertThat(stats.getMax(), equalTo((double) i)); assertThat(stats.getMax(), equalTo((double) i));
i++;
} }
} }
@ -994,8 +996,8 @@ public class StringTermsTests extends ElasticsearchIntegrationTest {
assertThat(terms.getName(), equalTo("terms")); assertThat(terms.getName(), equalTo("terms"));
assertThat(terms.getBuckets().size(), equalTo(5)); assertThat(terms.getBuckets().size(), equalTo(5));
for (int i = 4; i >= 0; i--) { int i = 4;
Terms.Bucket bucket = terms.getBucketByKey("val" + i); for (Terms.Bucket bucket : terms.getBuckets()) {
assertThat(bucket, notNullValue()); assertThat(bucket, notNullValue());
assertThat(key(bucket), equalTo("val" + i)); assertThat(key(bucket), equalTo("val" + i));
assertThat(bucket.getDocCount(), equalTo(1l)); assertThat(bucket.getDocCount(), equalTo(1l));
@ -1003,6 +1005,7 @@ public class StringTermsTests extends ElasticsearchIntegrationTest {
Stats stats = bucket.getAggregations().get("stats"); Stats stats = bucket.getAggregations().get("stats");
assertThat(stats, notNullValue()); assertThat(stats, notNullValue());
assertThat(stats.getMax(), equalTo((double) i)); assertThat(stats.getMax(), equalTo((double) i));
i--;
} }
} }
@ -1014,7 +1017,7 @@ public class StringTermsTests extends ElasticsearchIntegrationTest {
.addAggregation(terms("terms") .addAggregation(terms("terms")
.executionHint(randomExecutionHint()) .executionHint(randomExecutionHint())
.field(SINGLE_VALUED_FIELD_NAME) .field(SINGLE_VALUED_FIELD_NAME)
.order(Terms.Order.aggregation("stats.variance", asc)) .order(Terms.Order.aggregation("stats.sum_of_squares", asc))
.subAggregation(extendedStats("stats").field("i")) .subAggregation(extendedStats("stats").field("i"))
).execute().actionGet(); ).execute().actionGet();
@ -1025,8 +1028,8 @@ public class StringTermsTests extends ElasticsearchIntegrationTest {
assertThat(terms.getName(), equalTo("terms")); assertThat(terms.getName(), equalTo("terms"));
assertThat(terms.getBuckets().size(), equalTo(5)); assertThat(terms.getBuckets().size(), equalTo(5));
for (int i = 0; i < 5; i++) { int i = 0;
Terms.Bucket bucket = terms.getBucketByKey("val" + i); for (Terms.Bucket bucket : terms.getBuckets()) {
assertThat(bucket, notNullValue()); assertThat(bucket, notNullValue());
assertThat(key(bucket), equalTo("val" + i)); assertThat(key(bucket), equalTo("val" + i));
assertThat(bucket.getDocCount(), equalTo(1l)); assertThat(bucket.getDocCount(), equalTo(1l));
@ -1034,6 +1037,7 @@ public class StringTermsTests extends ElasticsearchIntegrationTest {
ExtendedStats stats = bucket.getAggregations().get("stats"); ExtendedStats stats = bucket.getAggregations().get("stats");
assertThat(stats, notNullValue()); assertThat(stats, notNullValue());
assertThat(stats.getMax(), equalTo((double) i)); assertThat(stats.getMax(), equalTo((double) i));
i++;
} }
} }