Skip to content

Commit 4851ddd

Browse files
committed
if we already have an idset, use it
1 parent f4c94a3 commit 4851ddd

File tree

1 file changed

+4
-3
lines changed
  • modules/elasticsearch/src/main/java/org/elasticsearch/search/facets

1 file changed

+4
-3
lines changed

modules/elasticsearch/src/main/java/org/elasticsearch/search/facets/FacetsPhase.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -72,10 +72,11 @@ public class FacetsPhase implements SearchPhase {
7272
Filter facetFilter = new QueryWrapperFilter(queryFacet.query());
7373
facetFilter = context.filterCache().cache(facetFilter);
7474
long count;
75-
if (contextFacets.queryType() == SearchContextFacets.QueryExecutionType.COLLECT) {
76-
count = executeQueryCollectorCount(context, queryFacet, facetFilter);
77-
} else if (contextFacets.queryType() == SearchContextFacets.QueryExecutionType.IDSET) {
75+
// if we already have the doc id set, then use idset since its faster
76+
if (context.searcher().docIdSet() != null || contextFacets.queryType() == SearchContextFacets.QueryExecutionType.IDSET) {
7877
count = executeQueryIdSetCount(context, queryFacet, facetFilter);
78+
} else if (contextFacets.queryType() == SearchContextFacets.QueryExecutionType.COLLECT) {
79+
count = executeQueryCollectorCount(context, queryFacet, facetFilter);
7980
} else {
8081
throw new ElasticSearchIllegalStateException("No matching for type [" + contextFacets.queryType() + "]");
8182
}

0 commit comments

Comments
 (0)