mirror of
https://github.com/honeymoose/OpenSearch.git
synced 2025-02-17 02:14:54 +00:00
SearchService#canMatch takes into consideration the alias filter (#55120)
Co-authored-by: Elastic Machine <elasticmachine@users.noreply.github.com>
This commit is contained in:
parent
29b70733ae
commit
6ef1c64760
@ -1116,6 +1116,8 @@ public class SearchService extends AbstractLifecycleComponent implements IndexEv
|
||||
// we don't want to use the reader wrapper since it could run costly operations
|
||||
// and we can afford false positives.
|
||||
try (Engine.Searcher searcher = indexShard.acquireCanMatchSearcher()) {
|
||||
final boolean aliasFilterCanMatch = request.getAliasFilter()
|
||||
.getQueryBuilder() instanceof MatchNoneQueryBuilder == false;
|
||||
QueryShardContext context = indexService.newQueryShardContext(request.shardId().id(), searcher,
|
||||
request::nowInMillis, request.getClusterAlias());
|
||||
Rewriteable.rewrite(request.getRewriteable(), context, false);
|
||||
@ -1123,10 +1125,12 @@ public class SearchService extends AbstractLifecycleComponent implements IndexEv
|
||||
MinAndMax<?> minMax = sortBuilder != null ? FieldSortBuilder.getMinMaxOrNull(context, sortBuilder) : null;
|
||||
if (canRewriteToMatchNone(request.source())) {
|
||||
QueryBuilder queryBuilder = request.source().query();
|
||||
return new CanMatchResponse(queryBuilder instanceof MatchNoneQueryBuilder == false, minMax);
|
||||
return new CanMatchResponse(
|
||||
aliasFilterCanMatch && queryBuilder instanceof MatchNoneQueryBuilder == false, minMax
|
||||
);
|
||||
}
|
||||
// null query means match_all
|
||||
return new CanMatchResponse(true, minMax);
|
||||
return new CanMatchResponse(aliasFilterCanMatch, minMax);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -673,6 +673,16 @@ public class SearchServiceTests extends ESSingleNodeTestCase {
|
||||
ShardSearchRequest request = new ShardSearchRequest(OriginalIndices.NONE, searchRequest, indexShard.shardId(), 1,
|
||||
new AliasFilter(null, Strings.EMPTY_ARRAY), 1.0f, -1, null, null);
|
||||
|
||||
assertAcked(
|
||||
client().admin().indices().prepareAliases()
|
||||
.addAlias("index", "alias", new MatchNoneQueryBuilder())
|
||||
.get()
|
||||
);
|
||||
|
||||
searchRequest.source(new SearchSourceBuilder().query(new MatchAllQueryBuilder()));
|
||||
assertFalse(service.canMatch(new ShardSearchRequest(OriginalIndices.NONE, searchRequest, indexShard.shardId(), 1,
|
||||
new AliasFilter(new MatchNoneQueryBuilder(), "alias"), 1f, -1, null, null)).canMatch());
|
||||
|
||||
CountDownLatch latch = new CountDownLatch(1);
|
||||
SearchShardTask task = new SearchShardTask(123L, "", "", "", null, Collections.emptyMap());
|
||||
service.executeQueryPhase(request, task, new ActionListener<SearchPhaseResult>() {
|
||||
|
Loading…
x
Reference in New Issue
Block a user