|
@@ -23,6 +23,8 @@ import org.elasticsearch.ElasticsearchException;
|
|
|
import org.elasticsearch.action.index.IndexRequestBuilder;
|
|
|
import org.elasticsearch.action.search.SearchResponse;
|
|
|
import org.elasticsearch.common.xcontent.XContentBuilder;
|
|
|
+import org.elasticsearch.index.query.AndFilterBuilder;
|
|
|
+import org.elasticsearch.index.query.FilterBuilder;
|
|
|
import org.elasticsearch.search.aggregations.bucket.filters.Filters;
|
|
|
import org.elasticsearch.search.aggregations.bucket.histogram.Histogram;
|
|
|
import org.elasticsearch.search.aggregations.metrics.avg.Avg;
|
|
@@ -39,7 +41,9 @@ import static org.elasticsearch.common.xcontent.XContentFactory.jsonBuilder;
|
|
|
import static org.elasticsearch.index.query.FilterBuilders.matchAllFilter;
|
|
|
import static org.elasticsearch.index.query.FilterBuilders.termFilter;
|
|
|
import static org.elasticsearch.index.query.QueryBuilders.matchAllQuery;
|
|
|
-import static org.elasticsearch.search.aggregations.AggregationBuilders.*;
|
|
|
+import static org.elasticsearch.search.aggregations.AggregationBuilders.avg;
|
|
|
+import static org.elasticsearch.search.aggregations.AggregationBuilders.filters;
|
|
|
+import static org.elasticsearch.search.aggregations.AggregationBuilders.histogram;
|
|
|
import static org.elasticsearch.test.hamcrest.ElasticsearchAssertions.assertSearchResponse;
|
|
|
import static org.hamcrest.Matchers.equalTo;
|
|
|
import static org.hamcrest.Matchers.is;
|
|
@@ -122,6 +126,27 @@ public class FiltersTests extends ElasticsearchIntegrationTest {
|
|
|
assertThat(bucket.getDocCount(), equalTo((long) numTag2Docs));
|
|
|
}
|
|
|
|
|
|
+ // See NullPointer issue when filters are empty:
|
|
|
+ // https://github.com/elasticsearch/elasticsearch/issues/8438
|
|
|
+ @Test
|
|
|
+ public void emptyFilterDeclarations() throws Exception {
|
|
|
+ FilterBuilder emptyFilter = new AndFilterBuilder();
|
|
|
+ SearchResponse response = client().prepareSearch("idx")
|
|
|
+ .addAggregation(filters("tags").filter("all", emptyFilter).filter("tag1", termFilter("tag", "tag1"))).execute()
|
|
|
+ .actionGet();
|
|
|
+
|
|
|
+ assertSearchResponse(response);
|
|
|
+
|
|
|
+ Filters filters = response.getAggregations().get("tags");
|
|
|
+ assertThat(filters, notNullValue());
|
|
|
+ Filters.Bucket allBucket = filters.getBucketByKey("all");
|
|
|
+ assertThat(allBucket.getDocCount(), equalTo((long) numDocs));
|
|
|
+
|
|
|
+ Filters.Bucket bucket = filters.getBucketByKey("tag1");
|
|
|
+ assertThat(bucket, Matchers.notNullValue());
|
|
|
+ assertThat(bucket.getDocCount(), equalTo((long) numTag1Docs));
|
|
|
+ }
|
|
|
+
|
|
|
@Test
|
|
|
public void withSubAggregation() throws Exception {
|
|
|
SearchResponse response = client().prepareSearch("idx")
|