From 2b14d52ee0fbdc01e338cce80d7f33514906c4d9 Mon Sep 17 00:00:00 2001 From: "ievgen.degtiarenko" Date: Tue, 11 Nov 2025 09:50:30 +0100 Subject: [PATCH 1/2] Cleanup index resolution --- .../xpack/esql/enrich/EnrichPolicyResolver.java | 2 +- .../xpack/esql/session/EsqlSession.java | 4 ++-- .../xpack/esql/session/IndexResolver.java | 12 ++++-------- .../xpack/esql/session/SessionUtils.java | 13 ------------- 4 files changed, 7 insertions(+), 24 deletions(-) diff --git a/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/enrich/EnrichPolicyResolver.java b/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/enrich/EnrichPolicyResolver.java index 0744fd126999d..8667b313f771e 100644 --- a/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/enrich/EnrichPolicyResolver.java +++ b/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/enrich/EnrichPolicyResolver.java @@ -447,7 +447,7 @@ public void messageReceived(LookupRequest request, TransportChannel channel, Tas } try (ThreadContext.StoredContext ignored = threadContext.stashWithOrigin(ClientHelper.ENRICH_ORIGIN)) { String indexName = EnrichPolicy.getBaseName(policyName); - indexResolver.resolveAsMergedMapping( + indexResolver.resolveIndices( indexName, IndexResolver.ALL_FIELDS, null, diff --git a/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/session/EsqlSession.java b/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/session/EsqlSession.java index 4bde66c6a9842..c6855a9a3a43f 100644 --- a/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/session/EsqlSession.java +++ b/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/session/EsqlSession.java @@ -602,7 +602,7 @@ private void preAnalyzeLookupIndex( ThreadPool.Names.SEARCH_COORDINATION, ThreadPool.Names.SYSTEM_READ ); - indexResolver.resolveAsMergedMapping( + indexResolver.resolveIndices( EsqlCCSUtils.createQualifiedLookupIndexExpressionFromAvailableClusters(executionInfo, localPattern), result.wildcardJoinIndices().contains(localPattern) ? IndexResolver.ALL_FIELDS : result.fieldNames, null, @@ -837,7 +837,7 @@ private void preAnalyzeMainIndices( // return empty resolution if the expression is pure CCS and resolved no remote clusters (like no-such-cluster*:index) listener.onResponse(result.withIndices(indexPattern, IndexResolution.empty(indexPattern.indexPattern()))); } else { - indexResolver.resolveAsMergedMappingAndRetrieveMinimumVersion( + indexResolver.resolveIndicesVersioned( indexPattern.indexPattern(), result.fieldNames, // Maybe if no indices are returned, retry without index mode and provide a clearer error message. diff --git a/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/session/IndexResolver.java b/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/session/IndexResolver.java index 57d0db5d04714..26d9f67925a33 100644 --- a/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/session/IndexResolver.java +++ b/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/session/IndexResolver.java @@ -86,7 +86,7 @@ public IndexResolver(Client client) { /** * Resolves a pattern to one (potentially compound meaning that spawns multiple indices) mapping. */ - public void resolveAsMergedMapping( + public void resolveIndices( String indexWildcard, Set fieldNames, QueryBuilder requestFilter, @@ -95,18 +95,14 @@ public void resolveAsMergedMapping( boolean useDenseVectorWhenNotSupported, ActionListener listener ) { - ActionListener> ignoreVersion = listener.delegateFailureAndWrap( - (l, versionedResolution) -> l.onResponse(versionedResolution.inner()) - ); - - resolveAsMergedMappingAndRetrieveMinimumVersion( + resolveIndicesVersioned( indexWildcard, fieldNames, requestFilter, includeAllDimensions, useAggregateMetricDoubleWhenNotSupported, useDenseVectorWhenNotSupported, - ignoreVersion + listener.map(Versioned::inner) ); } @@ -114,7 +110,7 @@ public void resolveAsMergedMapping( * Resolves a pattern to one (potentially compound meaning that spawns multiple indices) mapping. Also retrieves the minimum transport * version available in the cluster (and remotes). */ - public void resolveAsMergedMappingAndRetrieveMinimumVersion( + public void resolveIndicesVersioned( String indexWildcard, Set fieldNames, QueryBuilder requestFilter, diff --git a/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/session/SessionUtils.java b/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/session/SessionUtils.java index c622e3edc2c0a..6a272d678b1c4 100644 --- a/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/session/SessionUtils.java +++ b/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/session/SessionUtils.java @@ -10,13 +10,11 @@ import org.elasticsearch.common.unit.ByteSizeValue; import org.elasticsearch.compute.data.Block; import org.elasticsearch.compute.data.BlockFactory; -import org.elasticsearch.compute.data.BlockUtils; import org.elasticsearch.compute.data.Page; import org.elasticsearch.core.Releasables; import org.elasticsearch.xpack.esql.core.expression.Attribute; import org.elasticsearch.xpack.esql.planner.PlannerUtils; -import java.util.ArrayList; import java.util.List; import java.util.function.LongFunction; @@ -51,15 +49,4 @@ public static long checkPagesBelowSize(List pages, ByteSizeValue maxSize, } return currentSize; } - - public static List fromPage(List schema, Page page) { - if (page.getPositionCount() != 1) { - throw new IllegalArgumentException("expected single row"); - } - List values = new ArrayList<>(schema.size()); - for (int i = 0; i < schema.size(); i++) { - values.add(BlockUtils.toJavaObject(page.getBlock(i), 0)); - } - return values; - } } From b453b4d94bb07f94b4d4a86f412e3c95452185de Mon Sep 17 00:00:00 2001 From: "ievgen.degtiarenko" Date: Tue, 11 Nov 2025 13:39:15 +0100 Subject: [PATCH 2/2] remove unused --- .../elasticsearch/xpack/esql/action/EsqlExecutionInfo.java | 4 ---- 1 file changed, 4 deletions(-) diff --git a/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/action/EsqlExecutionInfo.java b/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/action/EsqlExecutionInfo.java index 3116978f67696..70bf575b1d809 100644 --- a/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/action/EsqlExecutionInfo.java +++ b/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/action/EsqlExecutionInfo.java @@ -151,10 +151,6 @@ public boolean includeCCSMetadata() { return includeCCSMetadata; } - public Predicate skipOnFailurePredicate() { - return skipOnFailurePredicate; - } - /** * Call when ES|QL "planning" phase is complete and query execution (in ComputeService) is about to start. * Note this is currently only built for a single phase planning/execution model. When INLINE STATS