Skip to content

Commit 0ea296a

Browse files
author
Luc Boutier
committed
Use query filters rather than post filters.
1 parent 856ac1f commit 0ea296a

File tree

4 files changed

+22
-14
lines changed

4 files changed

+22
-14
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.6.1-SNAPSHOT</version>
7+
<version>1.6.1</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.6.1-SNAPSHOT</version>
6+
<version>1.6.1</version>
77
</parent>
88

99
<artifactId>elasticsearch-mapping</artifactId>

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

Lines changed: 19 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -386,22 +386,26 @@ public SearchRequestBuilder generate(QueryBuilderAdapter queryBuilderAdapter) {
386386
SearchRequestBuilder searchRequestBuilder = esClient.getClient().prepareSearch(this.indices);
387387
searchRequestBuilder.setSearchType(SearchType.QUERY_THEN_FETCH);
388388
QueryBuilder query = queryBuilder;
389+
if (functionScore != null) {
390+
query = QueryBuilders.functionScoreQuery(query, ScoreFunctionBuilders.scriptFunction(functionScore));
391+
}
389392
if (queryBuilderAdapter != null) {
390393
query = queryBuilderAdapter.adapt(queryBuilder);
391394
}
392-
if (functionScore == null) {
393-
searchRequestBuilder.setQuery(query);
394-
} else {
395-
searchRequestBuilder.setQuery(QueryBuilders.functionScoreQuery(query, ScoreFunctionBuilders.scriptFunction(functionScore)));
396-
}
397-
searchRequestBuilder.setTypes(getTypes());
395+
// create a filtered query with filters and add aggregations
398396
if (classes != null && classes.length > 0) {
397+
QueryBuilder newQB = null;
399398
addFetchContext(searchRequestBuilder);
400399
Set<String> aggIds = Sets.newHashSet();
401400
for (Class<?> clazz : classes) {
402-
addFilters(searchRequestBuilder, customFilter, clazz, aggIds);
401+
newQB = addFilters(query, searchRequestBuilder, customFilter, clazz, aggIds);
402+
}
403+
if (newQB != null) {
404+
query = newQB;
403405
}
404406
}
407+
searchRequestBuilder.setQuery(query);
408+
searchRequestBuilder.setTypes(getTypes());
405409
if (fieldSort != null) {
406410
FieldSortBuilder sortBuilder = SortBuilders.fieldSort(fieldSort);
407411
if (fieldSortDesc) {
@@ -475,9 +479,10 @@ private void addFetchContext(SearchRequestBuilder searchRequestBuilder) {
475479
searchRequestBuilder.setFetchSource(inc, exc);
476480
}
477481

478-
private void addFilters(SearchRequestBuilder searchRequestBuilder, FilterBuilder customFilter, Class<?> clazz, Set<String> aggIds) {
482+
private QueryBuilder addFilters(QueryBuilder query, SearchRequestBuilder searchRequestBuilder, FilterBuilder customFilter, Class<?> clazz,
483+
Set<String> aggIds) {
479484
if (clazz == null) {
480-
return;
485+
return query;
481486
}
482487
final List<FilterBuilder> esFilters = buildFilters(clazz.getName());
483488
if (customFilter != null) {
@@ -486,15 +491,18 @@ private void addFilters(SearchRequestBuilder searchRequestBuilder, FilterBuilder
486491
FilterBuilder filter = null;
487492
if (esFilters.size() > 0) {
488493
filter = getAndFilter(esFilters);
489-
searchRequestBuilder.setPostFilter(filter);
494+
if (filter != null) {
495+
query = QueryBuilders.filteredQuery(query, filter);
496+
}
490497
}
491498
if (facets) {
492499
if (filters == null) {
493-
addAggregations(new HashMap<String, String[]>(), clazz.getName(), searchRequestBuilder, aggIds);
500+
addAggregations(new HashMap(), clazz.getName(), searchRequestBuilder, aggIds);
494501
} else {
495502
addAggregations(filters, clazz.getName(), searchRequestBuilder, aggIds);
496503
}
497504
}
505+
return query;
498506
}
499507

500508
private void addAggregations(Map<String, String[]> filters, String className, SearchRequestBuilder searchRequestBuilder, Set<String> aggIds) {

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.6.1-SNAPSHOT</version>
6+
<version>1.6.1</version>
77
<packaging>pom</packaging>
88

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

0 commit comments

Comments
 (0)