Skip to content

Commit 80254b0

Browse files
committed
ALIEN-1812 : As a user I want to have facet on null values
1 parent 0df4eac commit 80254b0

File tree

7 files changed

+26
-12
lines changed

7 files changed

+26
-12
lines changed

elasticsearch-annotations/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
<parent>
55
<groupId>org.alien4cloud</groupId>
66
<artifactId>elasticsearch-mapping-parent</artifactId>
7-
<version>1.7.0</version>
7+
<version>1.7.1-SNAPSHOT</version>
88
</parent>
99

1010
<artifactId>elasticsearch-annotations</artifactId>

elasticsearch-mapping/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
<parent>
44
<groupId>org.alien4cloud</groupId>
55
<artifactId>elasticsearch-mapping-parent</artifactId>
6-
<version>1.7.0</version>
6+
<version>1.7.1-SNAPSHOT</version>
77
</parent>
88

99
<artifactId>elasticsearch-mapping</artifactId>
Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package org.elasticsearch.mapping;
22

3+
import java.util.List;
4+
35
import org.elasticsearch.search.aggregations.AggregationBuilder;
46

57
/**
@@ -9,9 +11,9 @@
911
*/
1012
public interface IFacetBuilderHelper extends IFilterBuilderHelper {
1113
/**
12-
* Build a facet.
14+
* Build facets.
1315
*
14-
* @return The facet.
16+
* @return The facets.
1517
*/
16-
AggregationBuilder buildFacet();
18+
List<AggregationBuilder> buildFacets();
1719
}

elasticsearch-mapping/src/main/java/org/elasticsearch/mapping/QueryHelper.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,11 @@
11
package org.elasticsearch.mapping;
22

3-
import java.util.*;
3+
import java.util.ArrayList;
4+
import java.util.HashMap;
5+
import java.util.List;
6+
import java.util.Map;
47
import java.util.Map.Entry;
8+
import java.util.Set;
59
import java.util.function.Supplier;
610

711
import javax.annotation.Resource;
@@ -551,7 +555,7 @@ private List<AggregationBuilder> buildAggregations(String className, Set<String>
551555

552556
for (IFacetBuilderHelper facetBuilderHelper : facetBuilderHelpers) {
553557
if (filters == null || !filters.contains(facetBuilderHelper.getEsFieldName())) {
554-
aggregationBuilders.add(facetBuilderHelper.buildFacet());
558+
aggregationBuilders.addAll(facetBuilderHelper.buildFacets());
555559
}
556560
}
557561

elasticsearch-mapping/src/main/java/org/elasticsearch/mapping/RangeAggregationBuilderHelper.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
package org.elasticsearch.mapping;
22

3+
import java.util.Collections;
4+
import java.util.List;
5+
36
import org.elasticsearch.annotation.query.RangeFacet;
47
import org.elasticsearch.search.aggregations.AggregationBuilder;
58
import org.elasticsearch.search.aggregations.AggregationBuilders;
@@ -26,13 +29,13 @@ public RangeAggregationBuilderHelper(final String nestedPath, final String esFie
2629
}
2730

2831
@Override
29-
public AggregationBuilder buildFacet() {
32+
public List<AggregationBuilder> buildFacets() {
3033
RangeBuilder rangeFacetBuilder = AggregationBuilders.range(getEsFieldName()).field(getEsFieldName()).addUnboundedFrom(this.ranges[0]);
3134
int i = 1;
3235
for (; i < this.ranges.length - 2; i += 2) {
3336
rangeFacetBuilder.addRange(this.ranges[i], this.ranges[i + 1]);
3437
}
3538
rangeFacetBuilder.addUnboundedTo(this.ranges[i]);
36-
return rangeFacetBuilder;
39+
return Collections.singletonList(rangeFacetBuilder);
3740
}
3841
}

elasticsearch-mapping/src/main/java/org/elasticsearch/mapping/TermsAggregationBuilderHelper.java

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,12 @@
11
package org.elasticsearch.mapping;
22

3+
import java.util.List;
4+
35
import org.elasticsearch.annotation.query.TermsFacet;
6+
import org.elasticsearch.common.collect.Lists;
47
import org.elasticsearch.search.aggregations.AggregationBuilder;
58
import org.elasticsearch.search.aggregations.AggregationBuilders;
9+
import org.elasticsearch.search.aggregations.bucket.missing.MissingBuilder;
610
import org.elasticsearch.search.aggregations.bucket.terms.TermsBuilder;
711
import org.elasticsearch.search.facet.terms.TermsFacet.ComparatorType;
812

@@ -34,12 +38,13 @@ public TermsAggregationBuilderHelper(final boolean isAnalyzed, final String nest
3438
}
3539

3640
@Override
37-
public AggregationBuilder buildFacet() {
41+
public List<AggregationBuilder> buildFacets() {
3842
TermsBuilder termsBuilder = AggregationBuilders.terms(getEsFieldName()).field(getEsFieldName()).size(size);
43+
MissingBuilder missingBuilder = AggregationBuilders.missing("missing_" + getEsFieldName()).field(getEsFieldName());
3944
// Elastic search has a bug with excludes so don't use it. https://github.com/elastic/elasticsearch/issues/18575
4045
// if (exclude != null) {
4146
// termsBuilder.exclude(exclude);
4247
// }
43-
return termsBuilder;
48+
return Lists.newArrayList(termsBuilder, missingBuilder);
4449
}
4550
}

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
<modelVersion>4.0.0</modelVersion>
44
<groupId>org.alien4cloud</groupId>
55
<artifactId>elasticsearch-mapping-parent</artifactId>
6-
<version>1.7.0</version>
6+
<version>1.7.1-SNAPSHOT</version>
77
<packaging>pom</packaging>
88

99
<name>Elastic search mapping parent</name>

0 commit comments

Comments
 (0)