Skip to content

Commit 91c0a75

Browse files
Use pattern matching for switch
1 parent f622550 commit 91c0a75

1 file changed

Lines changed: 21 additions & 28 deletions

File tree

server/src/main/java/org/elasticsearch/index/query/support/AutoPrefilteringUtils.java

Lines changed: 21 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -42,35 +42,28 @@ public static Optional<QueryBuilder> pruneQuery(QueryBuilder query, Set<Class<?
4242
return Optional.empty();
4343
}
4444

45-
if (query instanceof BoolQueryBuilder boolQuery) {
46-
return pruneBoolQuery(boolQuery, prunedTypes);
47-
}
48-
if (query instanceof BoostingQueryBuilder boostingQuery) {
45+
return switch (query) {
46+
case BoolQueryBuilder boolQuery -> pruneBoolQuery(boolQuery, prunedTypes);
4947
// We only need the positive query here as the negative query is used for scoring only - we are filtering.
50-
return pruneQuery(boostingQuery.positiveQuery(), prunedTypes);
51-
}
52-
if (query instanceof ConstantScoreQueryBuilder constantScoreQuery) {
53-
Optional<QueryBuilder> pruned = pruneQuery(constantScoreQuery.innerQuery(), prunedTypes);
54-
return pruned.map(q -> q == constantScoreQuery.innerQuery() ? constantScoreQuery : new ConstantScoreQueryBuilder(q));
55-
}
56-
if (query instanceof DisMaxQueryBuilder disMaxQuery) {
57-
return pruneDisMaxQuery(disMaxQuery, prunedTypes);
58-
}
59-
if (query instanceof FunctionScoreQueryBuilder functionScoreQuery) {
60-
return pruneFunctionScoreQuery(functionScoreQuery, prunedTypes);
61-
}
62-
if (query instanceof InterceptedQueryBuilderWrapper interceptedQuery) {
63-
Optional<QueryBuilder> pruned = pruneQuery(interceptedQuery.query(), prunedTypes);
64-
return pruned.map(q -> q == interceptedQuery.query() ? interceptedQuery : new InterceptedQueryBuilderWrapper(q));
65-
}
66-
if (query instanceof NestedQueryBuilder nestedQuery) {
67-
Optional<QueryBuilder> pruned = pruneQuery(nestedQuery.query(), prunedTypes);
68-
return pruned.map(
69-
q -> q == nestedQuery.query() ? nestedQuery : new NestedQueryBuilder(nestedQuery.path(), q, nestedQuery.scoreMode())
70-
);
71-
}
72-
73-
return Optional.of(query);
48+
case BoostingQueryBuilder boostingQuery -> pruneQuery(boostingQuery.positiveQuery(), prunedTypes);
49+
case ConstantScoreQueryBuilder constantScoreQuery -> {
50+
Optional<QueryBuilder> pruned = pruneQuery(constantScoreQuery.innerQuery(), prunedTypes);
51+
yield pruned.map(q -> q == constantScoreQuery.innerQuery() ? constantScoreQuery : new ConstantScoreQueryBuilder(q));
52+
}
53+
case DisMaxQueryBuilder disMaxQuery -> pruneDisMaxQuery(disMaxQuery, prunedTypes);
54+
case FunctionScoreQueryBuilder functionScoreQuery -> pruneFunctionScoreQuery(functionScoreQuery, prunedTypes);
55+
case InterceptedQueryBuilderWrapper interceptedQuery -> {
56+
Optional<QueryBuilder> pruned = pruneQuery(interceptedQuery.query(), prunedTypes);
57+
yield pruned.map(q -> q == interceptedQuery.query() ? interceptedQuery : new InterceptedQueryBuilderWrapper(q));
58+
}
59+
case NestedQueryBuilder nestedQuery -> {
60+
Optional<QueryBuilder> pruned = pruneQuery(nestedQuery.query(), prunedTypes);
61+
yield pruned.map(
62+
q -> q == nestedQuery.query() ? nestedQuery : new NestedQueryBuilder(nestedQuery.path(), q, nestedQuery.scoreMode())
63+
);
64+
}
65+
default -> Optional.of(query);
66+
};
7467
}
7568

7669
private static Optional<QueryBuilder> pruneBoolQuery(BoolQueryBuilder boolQuery, Set<Class<? extends QueryBuilder>> prunedTypes) {

0 commit comments

Comments
 (0)