diff --git a/x-pack/plugin/core/src/main/java/module-info.java b/x-pack/plugin/core/src/main/java/module-info.java index 94c45ea959242..ec64323c50cde 100644 --- a/x-pack/plugin/core/src/main/java/module-info.java +++ b/x-pack/plugin/core/src/main/java/module-info.java @@ -70,7 +70,6 @@ exports org.elasticsearch.xpack.core.eql; exports org.elasticsearch.xpack.core.esql; exports org.elasticsearch.xpack.core.esql.action; - exports org.elasticsearch.xpack.core.esql.action.internal; // TODO: qualify to esql when modularized exports org.elasticsearch.xpack.core.frozen; exports org.elasticsearch.xpack.core.graph.action; exports org.elasticsearch.xpack.core.graph; diff --git a/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/esql/action/EsqlQueryRequestBuilder.java b/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/esql/action/EsqlQueryRequestBuilder.java deleted file mode 100644 index ed48138d533d4..0000000000000 --- a/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/esql/action/EsqlQueryRequestBuilder.java +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -package org.elasticsearch.xpack.core.esql.action; - -import org.elasticsearch.action.ActionRequestBuilder; -import org.elasticsearch.action.ActionType; -import org.elasticsearch.client.internal.ElasticsearchClient; -import org.elasticsearch.index.query.QueryBuilder; -import org.elasticsearch.xpack.core.esql.action.internal.SharedSecrets; - -public abstract class EsqlQueryRequestBuilder extends - ActionRequestBuilder { - - private final ActionType action; - - /** Creates a new ES|QL query request builder. */ - public static EsqlQueryRequestBuilder newRequestBuilder( - ElasticsearchClient client - ) { - return SharedSecrets.getEsqlQueryRequestBuilderAccess().newEsqlQueryRequestBuilder(client); - } - - // not for direct use - protected EsqlQueryRequestBuilder(ElasticsearchClient client, ActionType action, Request request) { - super(client, action, request); - this.action = action; - } - - public final ActionType action() { - return action; - } - - public abstract EsqlQueryRequestBuilder query(String query); - - public abstract EsqlQueryRequestBuilder filter(QueryBuilder filter); - - public abstract EsqlQueryRequestBuilder allowPartialResults(boolean allowPartialResults); - - public abstract EsqlQueryRequestBuilder profile(boolean profile); -} diff --git a/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/esql/action/internal/SharedSecrets.java b/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/esql/action/internal/SharedSecrets.java deleted file mode 100644 index 7e635c4e89354..0000000000000 --- a/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/esql/action/internal/SharedSecrets.java +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -package org.elasticsearch.xpack.core.esql.action.internal; - -import org.elasticsearch.client.internal.ElasticsearchClient; -import org.elasticsearch.xpack.core.esql.action.EsqlQueryRequest; -import org.elasticsearch.xpack.core.esql.action.EsqlQueryRequestBuilder; -import org.elasticsearch.xpack.core.esql.action.EsqlQueryResponse; - -/** - * For secret access to ES|QL internals only. Do not use. - * TODO qualify export when ES|QL is modularized - */ -public class SharedSecrets { - - private static EsqlQueryRequestBuilderAccess esqlQueryRequestBuilderAccess; - - public static void setEsqlQueryRequestBuilderAccess(EsqlQueryRequestBuilderAccess access) { - esqlQueryRequestBuilderAccess = access; - } - - public static EsqlQueryRequestBuilderAccess getEsqlQueryRequestBuilderAccess() { - var access = esqlQueryRequestBuilderAccess; - if (access == null) { - throw new IllegalStateException("ESQL module not present or initialized"); - } - return access; - } - - public interface EsqlQueryRequestBuilderAccess { - - EsqlQueryRequestBuilder newEsqlQueryRequestBuilder( - ElasticsearchClient client - ); - } -} diff --git a/x-pack/plugin/core/src/test/java/org/elasticsearch/xpack/core/esql/action/EsqlQueryRequestBuilderTests.java b/x-pack/plugin/core/src/test/java/org/elasticsearch/xpack/core/esql/action/EsqlQueryRequestBuilderTests.java deleted file mode 100644 index d32c2d2c7d6d0..0000000000000 --- a/x-pack/plugin/core/src/test/java/org/elasticsearch/xpack/core/esql/action/EsqlQueryRequestBuilderTests.java +++ /dev/null @@ -1,22 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -package org.elasticsearch.xpack.core.esql.action; - -import org.elasticsearch.test.ESIntegTestCase; - -import static org.hamcrest.core.IsEqual.equalTo; - -public class EsqlQueryRequestBuilderTests extends ESIntegTestCase { - - // This is a trivial test that asserts IAE when the ES|QL module is - // not present. - public void testIllegalStateException() { - var e = expectThrows(IllegalStateException.class, () -> EsqlQueryRequestBuilder.newRequestBuilder(client())); - assertThat(e.getMessage(), equalTo("ESQL module not present or initialized")); - } -} diff --git a/x-pack/plugin/esql/qa/action/src/internalClusterTest/java/org/elasticsearch/test/esql/qa/action/CoreEsqlActionIT.java b/x-pack/plugin/esql/qa/action/src/internalClusterTest/java/org/elasticsearch/test/esql/qa/action/CoreEsqlActionIT.java index 46fff385b5398..fa3da38cc2e67 100644 --- a/x-pack/plugin/esql/qa/action/src/internalClusterTest/java/org/elasticsearch/test/esql/qa/action/CoreEsqlActionIT.java +++ b/x-pack/plugin/esql/qa/action/src/internalClusterTest/java/org/elasticsearch/test/esql/qa/action/CoreEsqlActionIT.java @@ -15,11 +15,11 @@ import org.elasticsearch.test.ESIntegTestCase; import org.elasticsearch.xpack.core.ClientHelper; import org.elasticsearch.xpack.core.esql.action.ColumnInfo; -import org.elasticsearch.xpack.core.esql.action.EsqlQueryRequest; -import org.elasticsearch.xpack.core.esql.action.EsqlQueryRequestBuilder; import org.elasticsearch.xpack.core.esql.action.EsqlQueryResponse; import org.elasticsearch.xpack.core.esql.action.EsqlResponse; import org.elasticsearch.xpack.esql.action.ColumnInfoImpl; +import org.elasticsearch.xpack.esql.action.EsqlQueryAction; +import org.elasticsearch.xpack.esql.action.EsqlQueryRequest; import org.elasticsearch.xpack.esql.core.type.DataType; import org.junit.Before; @@ -30,6 +30,7 @@ import static java.util.concurrent.TimeUnit.SECONDS; import static org.elasticsearch.test.hamcrest.ElasticsearchAssertions.assertAcked; +import static org.elasticsearch.xpack.esql.action.EsqlQueryRequest.syncEsqlQueryRequest; import static org.hamcrest.Matchers.contains; // A subset of test scenarios exercised through the xpack core ES|QL @@ -54,8 +55,7 @@ protected Collection> nodePlugins() { public void testRowTypesAndValues() { var query = "row a = 1, b = \"x\", c = 1000000000000, d = 1.1"; - var request = EsqlQueryRequestBuilder.newRequestBuilder(client()).query(query); - try (EsqlQueryResponse queryResp = run(request)) { + try (EsqlQueryResponse queryResp = run(syncEsqlQueryRequest(query))) { logger.info("response=" + queryResp); EsqlResponse resp = queryResp.response(); assertThat(resp.columns().stream().map(ColumnInfo::name).toList(), contains("a", "b", "c", "d")); @@ -69,8 +69,7 @@ public void testRowTypesAndValues() { public void testRowStatsProjectGroupByInt() { var query = "row a = 1, b = 2 | stats count(b) by a | keep a"; - var request = EsqlQueryRequestBuilder.newRequestBuilder(client()).query(query); - try (var queryResp = run(request)) { + try (var queryResp = run(syncEsqlQueryRequest(query))) { logger.info("response=" + queryResp); var resp = queryResp.response(); assertThat(resp.columns().stream().map(ColumnInfo::name).toList(), contains("a")); @@ -81,8 +80,7 @@ public void testRowStatsProjectGroupByInt() { public void testFrom() { var query = "from test | keep item, cost, color, sale | sort item"; - var request = EsqlQueryRequestBuilder.newRequestBuilder(client()).query(query); - try (var queryResp = run(request)) { + try (var queryResp = run(syncEsqlQueryRequest(query))) { var resp = queryResp.response(); logger.info("response=" + queryResp); assertThat(resp.columns().stream().map(ColumnInfo::name).toList(), contains("item", "cost", "color", "sale")); @@ -108,8 +106,7 @@ public void testFrom() { public void testAccessAfterClose() { for (var closedQueryResp : new boolean[] { true, false }) { var query = "row a = 1"; - var request = EsqlQueryRequestBuilder.newRequestBuilder(client()).query(query); - var queryResp = run(request); + var queryResp = run(syncEsqlQueryRequest(query)); var resp = queryResp.response(); var rows = resp.rows(); var rowItr = rows.iterator(); @@ -136,19 +133,17 @@ public void testAccessAfterClose() { } } - protected EsqlQueryResponse run(EsqlQueryRequestBuilder request) { + protected EsqlQueryResponse run(EsqlQueryRequest request) { try { // The variants here ensure API usage patterns if (randomBoolean()) { - return request.execute().actionGet(30, SECONDS); - } else if (randomBoolean()) { - return client().execute(request.action(), request.request()).actionGet(30, SECONDS); + return client().execute(EsqlQueryAction.INSTANCE, request).actionGet(30, SECONDS); } else { return ClientHelper.executeWithHeaders( Map.of("Foo", "bar"), "origin", client(), - () -> request.execute().actionGet(30, SECONDS) + () -> client().execute(EsqlQueryAction.INSTANCE, request).actionGet(30, SECONDS) ); } } catch (ElasticsearchTimeoutException e) { diff --git a/x-pack/plugin/esql/src/internalClusterTest/java/org/elasticsearch/xpack/esql/action/AbstractCrossClusterTestCase.java b/x-pack/plugin/esql/src/internalClusterTest/java/org/elasticsearch/xpack/esql/action/AbstractCrossClusterTestCase.java index cb7c8561e0620..755e2aad4c433 100644 --- a/x-pack/plugin/esql/src/internalClusterTest/java/org/elasticsearch/xpack/esql/action/AbstractCrossClusterTestCase.java +++ b/x-pack/plugin/esql/src/internalClusterTest/java/org/elasticsearch/xpack/esql/action/AbstractCrossClusterTestCase.java @@ -348,8 +348,7 @@ protected EsqlQueryResponse runQuery(EsqlQueryRequest request) { } protected EsqlQueryResponse runQuery(String query, Boolean ccsMetadataInResponse) { - EsqlQueryRequest request = EsqlQueryRequest.syncEsqlQueryRequest(); - request.query(query); + EsqlQueryRequest request = EsqlQueryRequest.syncEsqlQueryRequest(query); request.pragmas(AbstractEsqlIntegTestCase.randomPragmas()); request.profile(randomInt(5) == 2); request.columnar(randomBoolean()); diff --git a/x-pack/plugin/esql/src/internalClusterTest/java/org/elasticsearch/xpack/esql/action/AbstractCrossClusterUsageTelemetryIT.java b/x-pack/plugin/esql/src/internalClusterTest/java/org/elasticsearch/xpack/esql/action/AbstractCrossClusterUsageTelemetryIT.java index 73dbb0de8acd4..5391cc0a1557b 100644 --- a/x-pack/plugin/esql/src/internalClusterTest/java/org/elasticsearch/xpack/esql/action/AbstractCrossClusterUsageTelemetryIT.java +++ b/x-pack/plugin/esql/src/internalClusterTest/java/org/elasticsearch/xpack/esql/action/AbstractCrossClusterUsageTelemetryIT.java @@ -51,8 +51,7 @@ public void setupQueryNode() { } protected CCSTelemetrySnapshot getTelemetryFromQuery(String query, String client) throws ExecutionException, InterruptedException { - EsqlQueryRequest request = EsqlQueryRequest.syncEsqlQueryRequest(); - request.query(query); + EsqlQueryRequest request = EsqlQueryRequest.syncEsqlQueryRequest(query); request.pragmas(AbstractEsqlIntegTestCase.randomPragmas()); request.columnar(randomBoolean()); request.includeCCSMetadata(randomBoolean()); @@ -78,8 +77,7 @@ protected CCSTelemetrySnapshot getTelemetryFromQuery(EsqlQueryRequest request, S } protected CCSTelemetrySnapshot getTelemetryFromAsyncQuery(String query) throws Exception { - EsqlQueryRequest request = EsqlQueryRequest.asyncEsqlQueryRequest(); - request.query(query); + EsqlQueryRequest request = EsqlQueryRequest.asyncEsqlQueryRequest(query); request.pragmas(AbstractEsqlIntegTestCase.randomPragmas()); request.columnar(randomBoolean()); request.includeCCSMetadata(randomBoolean()); @@ -111,9 +109,8 @@ protected CCSTelemetrySnapshot getTelemetryFromAsyncQuery(EsqlQueryRequest reque return getTelemetrySnapshot(queryNode); } - protected CCSTelemetrySnapshot getTelemetryFromFailedQuery(String query) throws Exception { - EsqlQueryRequest request = EsqlQueryRequest.syncEsqlQueryRequest(); - request.query(query); + protected CCSTelemetrySnapshot getTelemetryFromFailedQuery(String query) { + EsqlQueryRequest request = EsqlQueryRequest.syncEsqlQueryRequest(query); request.pragmas(AbstractEsqlIntegTestCase.randomPragmas()); request.columnar(randomBoolean()); request.includeCCSMetadata(randomBoolean()); diff --git a/x-pack/plugin/esql/src/internalClusterTest/java/org/elasticsearch/xpack/esql/action/AbstractEnrichBasedCrossClusterTestCase.java b/x-pack/plugin/esql/src/internalClusterTest/java/org/elasticsearch/xpack/esql/action/AbstractEnrichBasedCrossClusterTestCase.java index e3f630639c186..a3e38c74b7fe3 100644 --- a/x-pack/plugin/esql/src/internalClusterTest/java/org/elasticsearch/xpack/esql/action/AbstractEnrichBasedCrossClusterTestCase.java +++ b/x-pack/plugin/esql/src/internalClusterTest/java/org/elasticsearch/xpack/esql/action/AbstractEnrichBasedCrossClusterTestCase.java @@ -243,8 +243,7 @@ static String enrichVendors(Enrich.Mode mode) { } protected EsqlQueryResponse runQuery(String query, Boolean ccsMetadataInResponse) { - EsqlQueryRequest request = EsqlQueryRequest.syncEsqlQueryRequest(); - request.query(query); + EsqlQueryRequest request = EsqlQueryRequest.syncEsqlQueryRequest(query); request.pragmas(AbstractEsqlIntegTestCase.randomPragmas()); if (randomBoolean()) { request.profile(true); diff --git a/x-pack/plugin/esql/src/internalClusterTest/java/org/elasticsearch/xpack/esql/action/AbstractEsqlIntegTestCase.java b/x-pack/plugin/esql/src/internalClusterTest/java/org/elasticsearch/xpack/esql/action/AbstractEsqlIntegTestCase.java index cdf1ea0910594..356bf369e9a3f 100644 --- a/x-pack/plugin/esql/src/internalClusterTest/java/org/elasticsearch/xpack/esql/action/AbstractEsqlIntegTestCase.java +++ b/x-pack/plugin/esql/src/internalClusterTest/java/org/elasticsearch/xpack/esql/action/AbstractEsqlIntegTestCase.java @@ -166,7 +166,7 @@ protected void setRequestCircuitBreakerLimit(ByteSizeValue limit) { } protected final EsqlQueryResponse run(String esqlCommands) { - return run(syncEsqlQueryRequest().query(esqlCommands).pragmas(getPragmas())); + return run(syncEsqlQueryRequest(esqlCommands).pragmas(getPragmas())); } /** A hook for overriding. */ diff --git a/x-pack/plugin/esql/src/internalClusterTest/java/org/elasticsearch/xpack/esql/action/AsyncEsqlQueryActionIT.java b/x-pack/plugin/esql/src/internalClusterTest/java/org/elasticsearch/xpack/esql/action/AsyncEsqlQueryActionIT.java index d82e3512b30aa..9164ff4582ce2 100644 --- a/x-pack/plugin/esql/src/internalClusterTest/java/org/elasticsearch/xpack/esql/action/AsyncEsqlQueryActionIT.java +++ b/x-pack/plugin/esql/src/internalClusterTest/java/org/elasticsearch/xpack/esql/action/AsyncEsqlQueryActionIT.java @@ -43,6 +43,7 @@ import static org.elasticsearch.test.hamcrest.OptionalMatchers.isEmpty; import static org.elasticsearch.test.hamcrest.OptionalMatchers.isPresent; import static org.elasticsearch.xpack.esql.EsqlTestUtils.getValuesList; +import static org.elasticsearch.xpack.esql.action.EsqlQueryRequest.asyncEsqlQueryRequest; import static org.hamcrest.Matchers.empty; import static org.hamcrest.Matchers.equalTo; import static org.hamcrest.Matchers.greaterThanOrEqualTo; @@ -234,14 +235,12 @@ private void testFinishingBeforeTimeout(boolean keepOnCompletion) { scriptPermits.release(numberOfDocs()); - var request = EsqlQueryRequestBuilder.newAsyncEsqlQueryRequestBuilder(client()) - .query("from test | stats sum(pause_me)") - .pragmas(queryPragmas()) + var request = asyncEsqlQueryRequest("from test | stats sum(pause_me)").pragmas(queryPragmas()) .waitForCompletionTimeout(TimeValue.timeValueSeconds(60)) .keepOnCompletion(keepOnCompletion) .keepAlive(randomKeepAlive()); - try (var response = request.execute().actionGet(60, TimeUnit.SECONDS)) { + try (var response = client().execute(EsqlQueryAction.INSTANCE, request).actionGet(60, TimeUnit.SECONDS)) { assertThat(response.isRunning(), is(false)); assertThat(response.columns(), equalTo(List.of(new ColumnInfoImpl("sum(pause_me)", "long", null)))); assertThat(getValuesList(response).size(), equalTo(1)); @@ -270,16 +269,14 @@ private void testFinishingBeforeTimeout(boolean keepOnCompletion) { public void testUpdateKeepAlive() throws Exception { long nowInMillis = System.currentTimeMillis(); TimeValue keepAlive = timeValueSeconds(between(30, 60)); - var request = EsqlQueryRequestBuilder.newAsyncEsqlQueryRequestBuilder(client()) - .query("from test | stats sum(pause_me)") - .pragmas(queryPragmas()) + var request = asyncEsqlQueryRequest("from test | stats sum(pause_me)").pragmas(queryPragmas()) .waitForCompletionTimeout(TimeValue.timeValueMillis(between(1, 10))) .keepOnCompletion(randomBoolean()) .keepAlive(keepAlive); final String asyncId; long currentExpiration; try { - try (EsqlQueryResponse initialResponse = request.execute().actionGet(60, TimeUnit.SECONDS)) { + try (EsqlQueryResponse initialResponse = client().execute(EsqlQueryAction.INSTANCE, request).actionGet(60, TimeUnit.SECONDS)) { assertThat(initialResponse.isRunning(), is(true)); assertTrue(initialResponse.asyncExecutionId().isPresent()); asyncId = initialResponse.asyncExecutionId().get(); @@ -373,15 +370,14 @@ private EsqlQueryResponse sendAsyncQuery() { scriptPermits.release(between(1, 5)); var pragmas = queryPragmas(); - return EsqlQueryRequestBuilder.newAsyncEsqlQueryRequestBuilder(client()) - .query("from test | stats sum(pause_me)") - .pragmas(pragmas) - // deliberately small timeout, to frequently trigger incomplete response - .waitForCompletionTimeout(TimeValue.timeValueNanos(randomIntBetween(1, 20))) - .keepOnCompletion(randomBoolean()) - .keepAlive(randomKeepAlive()) - .execute() - .actionGet(60, TimeUnit.SECONDS); + return client().execute( + EsqlQueryAction.INSTANCE, + asyncEsqlQueryRequest("from test | stats sum(pause_me)").pragmas(pragmas) + // deliberately small timeout, to frequently trigger incomplete response + .waitForCompletionTimeout(TimeValue.timeValueNanos(randomIntBetween(1, 20))) + .keepOnCompletion(randomBoolean()) + .keepAlive(randomKeepAlive()) + ).actionGet(60, TimeUnit.SECONDS); } private QueryPragmas queryPragmas() { diff --git a/x-pack/plugin/esql/src/internalClusterTest/java/org/elasticsearch/xpack/esql/action/CrossClusterCancellationIT.java b/x-pack/plugin/esql/src/internalClusterTest/java/org/elasticsearch/xpack/esql/action/CrossClusterCancellationIT.java index d7d0256af8969..7c94d47c8efe7 100644 --- a/x-pack/plugin/esql/src/internalClusterTest/java/org/elasticsearch/xpack/esql/action/CrossClusterCancellationIT.java +++ b/x-pack/plugin/esql/src/internalClusterTest/java/org/elasticsearch/xpack/esql/action/CrossClusterCancellationIT.java @@ -33,6 +33,7 @@ import static org.elasticsearch.xpack.esql.EsqlTestUtils.getValuesList; import static org.elasticsearch.xpack.esql.action.AbstractEsqlIntegTestCase.randomPragmas; +import static org.elasticsearch.xpack.esql.action.EsqlQueryRequest.syncEsqlQueryRequest; import static org.hamcrest.Matchers.containsString; import static org.hamcrest.Matchers.equalTo; import static org.hamcrest.Matchers.greaterThanOrEqualTo; @@ -83,10 +84,8 @@ private void createRemoteIndex(int numDocs) throws Exception { public void testCancel() throws Exception { createRemoteIndex(between(10, 100)); - EsqlQueryRequest request = EsqlQueryRequest.syncEsqlQueryRequest(); String stats = randomStats(); - request.query("FROM *:test | " + stats + " total=sum(const) | LIMIT 1"); - request.pragmas(randomPragmas()); + EsqlQueryRequest request = syncEsqlQueryRequest("FROM *:test | " + stats + " total=sum(const) | LIMIT 1").pragmas(randomPragmas()); PlainActionFuture requestFuture = new PlainActionFuture<>(); client().execute(EsqlQueryAction.INSTANCE, request, requestFuture); assertTrue(SimplePauseFieldPlugin.startEmitting.await(30, TimeUnit.SECONDS)); @@ -128,9 +127,7 @@ public void testSameRemoteClusters() throws Exception { } int numDocs = between(10, 100); createRemoteIndex(numDocs); - EsqlQueryRequest request = EsqlQueryRequest.syncEsqlQueryRequest(); - request.query("FROM *:test | STATS total=sum(const) | LIMIT 1"); - request.pragmas(randomPragmas()); + EsqlQueryRequest request = syncEsqlQueryRequest("FROM *:test | STATS total=sum(const) | LIMIT 1").pragmas(randomPragmas()); ActionFuture future = client().execute(EsqlQueryAction.INSTANCE, request); try { try { @@ -161,10 +158,8 @@ public void testSameRemoteClusters() throws Exception { public void testTasks() throws Exception { createRemoteIndex(between(10, 100)); - EsqlQueryRequest request = EsqlQueryRequest.syncEsqlQueryRequest(); String stats = randomStats(); - request.query("FROM *:test | " + stats + " total=sum(const) | LIMIT 1"); - request.pragmas(randomPragmas()); + EsqlQueryRequest request = syncEsqlQueryRequest("FROM *:test | " + stats + " total=sum(const) | LIMIT 1").pragmas(randomPragmas()); ActionFuture requestFuture = client().execute(EsqlQueryAction.INSTANCE, request); assertTrue(SimplePauseFieldPlugin.startEmitting.await(30, TimeUnit.SECONDS)); try { @@ -200,10 +195,8 @@ public void testTasks() throws Exception { // Check that cancelling remote task with skip_unavailable=true produces failure public void testCancelSkipUnavailable() throws Exception { createRemoteIndex(between(10, 100)); - EsqlQueryRequest request = EsqlQueryRequest.syncEsqlQueryRequest(); String stats = randomStats(); - request.query("FROM *:test | " + stats + " total=sum(const) | LIMIT 1"); - request.pragmas(randomPragmas()); + EsqlQueryRequest request = syncEsqlQueryRequest("FROM *:test | " + stats + " total=sum(const) | LIMIT 1").pragmas(randomPragmas()); request.includeCCSMetadata(true); PlainActionFuture requestFuture = new PlainActionFuture<>(); client().execute(EsqlQueryAction.INSTANCE, request, requestFuture); diff --git a/x-pack/plugin/esql/src/internalClusterTest/java/org/elasticsearch/xpack/esql/action/CrossClusterLookupJoinIT.java b/x-pack/plugin/esql/src/internalClusterTest/java/org/elasticsearch/xpack/esql/action/CrossClusterLookupJoinIT.java index e21bd88d65c00..bf291768c4990 100644 --- a/x-pack/plugin/esql/src/internalClusterTest/java/org/elasticsearch/xpack/esql/action/CrossClusterLookupJoinIT.java +++ b/x-pack/plugin/esql/src/internalClusterTest/java/org/elasticsearch/xpack/esql/action/CrossClusterLookupJoinIT.java @@ -571,7 +571,7 @@ public void testAlwaysAppliesTheFilter() throws IOException { createIndexWithDocument(REMOTE_CLUSTER_1, "data", defaultSettings, Map.of("key", 2, "f2", 2)); createIndexWithDocument(REMOTE_CLUSTER_2, "data", defaultSettings, Map.of("key", 3, "f3", 3)); - try (var r = runQuery(syncEsqlQueryRequest().query("FROM data,*:data | WHERE f1 == 1").filter(new TermQueryBuilder("f2", 2)))) { + try (var r = runQuery(syncEsqlQueryRequest("FROM data,*:data | WHERE f1 == 1").filter(new TermQueryBuilder("f2", 2)))) { assertThat(getValuesList(r), hasSize(0)); } } @@ -599,8 +599,7 @@ public void testLookupJoinRetryAnalysis() throws IOException { VerificationException.class, containsString("lookup index [lookup] is not available in remote cluster [remote-b]"), () -> runQuery( - syncEsqlQueryRequest().query("FROM data,*:data | LOOKUP JOIN lookup ON key | WHERE f1 == 1") - .filter(new TermQueryBuilder("f2", 2)) + syncEsqlQueryRequest("FROM data,*:data | LOOKUP JOIN lookup ON key | WHERE f1 == 1").filter(new TermQueryBuilder("f2", 2)) ) ); } diff --git a/x-pack/plugin/esql/src/internalClusterTest/java/org/elasticsearch/xpack/esql/action/CrossClusterQueryIT.java b/x-pack/plugin/esql/src/internalClusterTest/java/org/elasticsearch/xpack/esql/action/CrossClusterQueryIT.java index d091467b47767..24ad4e3513536 100644 --- a/x-pack/plugin/esql/src/internalClusterTest/java/org/elasticsearch/xpack/esql/action/CrossClusterQueryIT.java +++ b/x-pack/plugin/esql/src/internalClusterTest/java/org/elasticsearch/xpack/esql/action/CrossClusterQueryIT.java @@ -45,6 +45,7 @@ import static org.elasticsearch.test.hamcrest.ElasticsearchAssertions.assertAcked; import static org.elasticsearch.xpack.esql.EsqlTestUtils.getValuesList; import static org.elasticsearch.xpack.esql.action.AbstractEsqlIntegTestCase.randomIncludeCCSMetadata; +import static org.elasticsearch.xpack.esql.action.EsqlQueryRequest.syncEsqlQueryRequest; import static org.hamcrest.Matchers.containsString; import static org.hamcrest.Matchers.equalTo; import static org.hamcrest.Matchers.greaterThan; @@ -655,11 +656,7 @@ public void testProfile() throws Exception { waitForNoInitializingShards(client(REMOTE_CLUSTER_1), TimeValue.timeValueSeconds(30), "logs-2"); final int localOnlyProfiles; { - EsqlQueryRequest request = EsqlQueryRequest.syncEsqlQueryRequest(); - request.query("FROM logs* | stats sum(v)"); - request.pragmas(pragmas); - request.profile(true); - try (EsqlQueryResponse resp = runQuery(request)) { + try (EsqlQueryResponse resp = runQuery(syncEsqlQueryRequest("FROM logs* | stats sum(v)").pragmas(pragmas).profile(true))) { List> values = getValuesList(resp); assertThat(values.get(0), equalTo(List.of(45L))); assertNotNull(resp.profile()); @@ -679,11 +676,7 @@ public void testProfile() throws Exception { } final int remoteOnlyProfiles; { - EsqlQueryRequest request = EsqlQueryRequest.syncEsqlQueryRequest(); - request.query("FROM c*:logs-* | stats sum(v)"); - request.pragmas(pragmas); - request.profile(true); - try (EsqlQueryResponse resp = runQuery(request)) { + try (EsqlQueryResponse resp = runQuery(syncEsqlQueryRequest("FROM c*:logs-* | stats sum(v)").pragmas(pragmas).profile(true))) { List> values = getValuesList(resp); assertThat(values.get(0), equalTo(List.of(285L))); assertNotNull(resp.profile()); @@ -706,10 +699,7 @@ public void testProfile() throws Exception { } final int allProfiles; { - EsqlQueryRequest request = EsqlQueryRequest.syncEsqlQueryRequest(); - request.query("FROM logs-*,c*:logs-* | stats total = sum(v)"); - request.pragmas(pragmas); - request.profile(true); + EsqlQueryRequest request = syncEsqlQueryRequest("FROM logs-*,c*:logs-* | stats total = sum(v)").pragmas(pragmas).profile(true); try (EsqlQueryResponse resp = runQuery(request)) { List> values = getValuesList(resp); assertThat(values.get(0), equalTo(List.of(330L))); @@ -740,8 +730,9 @@ public void testWarnings() throws Exception { int localNumShards = (Integer) testClusterInfo.get("local.num_shards"); int remoteNumShards = (Integer) testClusterInfo.get("remote1.num_shards"); - EsqlQueryRequest request = EsqlQueryRequest.syncEsqlQueryRequest(); - request.query("FROM logs-*,c*:logs-* | EVAL ip = to_ip(id) | STATS total = sum(v) by ip | LIMIT 10"); + EsqlQueryRequest request = syncEsqlQueryRequest( + "FROM logs-*,c*:logs-* | EVAL ip = to_ip(id) | STATS total = sum(v) by ip | LIMIT 10" + ); InternalTestCluster cluster = cluster(LOCAL_CLUSTER); String node = randomFrom(cluster.getNodeNames()); CountDownLatch latch = new CountDownLatch(1); @@ -1029,13 +1020,11 @@ public void testMultiTypes() throws Exception { public void testNoBothIncludeCcsMetadataAndIncludeExecutionMetadata() throws Exception { setupTwoClusters(); var query = "from logs-*,c*:logs-* | stats sum (v)"; - EsqlQueryRequest request = EsqlQueryRequest.syncEsqlQueryRequest(); - request.query(query); - request.pragmas(AbstractEsqlIntegTestCase.randomPragmas()); - request.profile(randomInt(5) == 2); - request.columnar(randomBoolean()); - request.includeCCSMetadata(randomBoolean()); - request.includeExecutionMetadata(randomBoolean()); + EsqlQueryRequest request = syncEsqlQueryRequest(query).pragmas(AbstractEsqlIntegTestCase.randomPragmas()) + .profile(randomInt(5) == 2) + .columnar(randomBoolean()) + .includeCCSMetadata(randomBoolean()) + .includeExecutionMetadata(randomBoolean()); assertThat( expectThrows(VerificationException.class, () -> runQuery(request)).getMessage(), diff --git a/x-pack/plugin/esql/src/internalClusterTest/java/org/elasticsearch/xpack/esql/action/CrossClusterQueryWithFiltersIT.java b/x-pack/plugin/esql/src/internalClusterTest/java/org/elasticsearch/xpack/esql/action/CrossClusterQueryWithFiltersIT.java index dddf7cbd9d5f2..0305eb27c2f04 100644 --- a/x-pack/plugin/esql/src/internalClusterTest/java/org/elasticsearch/xpack/esql/action/CrossClusterQueryWithFiltersIT.java +++ b/x-pack/plugin/esql/src/internalClusterTest/java/org/elasticsearch/xpack/esql/action/CrossClusterQueryWithFiltersIT.java @@ -31,6 +31,8 @@ import static org.elasticsearch.core.TimeValue.timeValueSeconds; import static org.elasticsearch.test.hamcrest.ElasticsearchAssertions.assertAcked; import static org.elasticsearch.xpack.esql.EsqlTestUtils.getValuesList; +import static org.elasticsearch.xpack.esql.action.EsqlQueryRequest.asyncEsqlQueryRequest; +import static org.elasticsearch.xpack.esql.action.EsqlQueryRequest.syncEsqlQueryRequest; import static org.hamcrest.Matchers.containsString; import static org.hamcrest.Matchers.equalTo; import static org.hamcrest.Matchers.greaterThanOrEqualTo; @@ -94,8 +96,7 @@ protected void assertClusterMetadataSkipped(EsqlExecutionInfo.Cluster clusterMet } protected EsqlQueryResponse runQuery(String query, Boolean ccsMetadataInResponse, QueryBuilder filter) { - EsqlQueryRequest request = randomBoolean() ? EsqlQueryRequest.asyncEsqlQueryRequest() : EsqlQueryRequest.syncEsqlQueryRequest(); - request.query(query); + EsqlQueryRequest request = randomBoolean() ? asyncEsqlQueryRequest(query) : syncEsqlQueryRequest(query); request.pragmas(AbstractEsqlIntegTestCase.randomPragmas()); request.profile(randomInt(5) == 2); request.columnar(randomBoolean()); diff --git a/x-pack/plugin/esql/src/internalClusterTest/java/org/elasticsearch/xpack/esql/action/CrossClusterUsageTelemetryIT.java b/x-pack/plugin/esql/src/internalClusterTest/java/org/elasticsearch/xpack/esql/action/CrossClusterUsageTelemetryIT.java index ecdb672f2c579..15228a0d7d04d 100644 --- a/x-pack/plugin/esql/src/internalClusterTest/java/org/elasticsearch/xpack/esql/action/CrossClusterUsageTelemetryIT.java +++ b/x-pack/plugin/esql/src/internalClusterTest/java/org/elasticsearch/xpack/esql/action/CrossClusterUsageTelemetryIT.java @@ -32,6 +32,7 @@ import static org.elasticsearch.test.hamcrest.ElasticsearchAssertions.assertAcked; import static org.elasticsearch.test.hamcrest.ElasticsearchAssertions.assertResponse; import static org.elasticsearch.xpack.esql.action.EsqlAsyncTestUtils.deleteAsyncId; +import static org.elasticsearch.xpack.esql.action.EsqlQueryRequest.asyncEsqlQueryRequest; import static org.hamcrest.Matchers.equalTo; public class CrossClusterUsageTelemetryIT extends AbstractCrossClusterUsageTelemetryIT { @@ -202,11 +203,10 @@ public void testAsyncStop() throws Exception { populateRuntimeIndex(REMOTE1, "pause", INDEX_WITH_RUNTIME_MAPPING); populateRuntimeIndex(REMOTE2, "pause", INDEX_WITH_RUNTIME_MAPPING); - EsqlQueryRequest request = EsqlQueryRequest.asyncEsqlQueryRequest(); - request.query("from logs-*,c*:logs-*,c*:blocking | eval v1=coalesce(const, v) | stats sum (v1)"); - request.pragmas(AbstractEsqlIntegTestCase.randomPragmas()); - request.columnar(randomBoolean()); - request.includeCCSMetadata(randomBoolean()); + EsqlQueryRequest request = asyncEsqlQueryRequest("from logs-*,c*:logs-*,c*:blocking | eval v1=coalesce(const, v) | stats sum (v1)") + .pragmas(AbstractEsqlIntegTestCase.randomPragmas()) + .columnar(randomBoolean()) + .includeCCSMetadata(randomBoolean()); AtomicReference asyncExecutionId = new AtomicReference<>(); assertResponse(cluster(LOCAL_CLUSTER).client(queryNode).execute(EsqlQueryAction.INSTANCE, request), resp -> { diff --git a/x-pack/plugin/esql/src/internalClusterTest/java/org/elasticsearch/xpack/esql/action/EnrichIT.java b/x-pack/plugin/esql/src/internalClusterTest/java/org/elasticsearch/xpack/esql/action/EnrichIT.java index 446c287be64fc..7e026f0629558 100644 --- a/x-pack/plugin/esql/src/internalClusterTest/java/org/elasticsearch/xpack/esql/action/EnrichIT.java +++ b/x-pack/plugin/esql/src/internalClusterTest/java/org/elasticsearch/xpack/esql/action/EnrichIT.java @@ -69,6 +69,7 @@ import static java.util.Collections.emptyList; import static org.elasticsearch.test.hamcrest.ElasticsearchAssertions.assertAcked; import static org.elasticsearch.transport.AbstractSimpleTransportTestCase.IGNORE_DESERIALIZATION_ERRORS_SETTING; +import static org.elasticsearch.xpack.esql.action.EsqlQueryRequest.syncEsqlQueryRequest; import static org.hamcrest.Matchers.closeTo; import static org.hamcrest.Matchers.containsInAnyOrder; import static org.hamcrest.Matchers.equalTo; @@ -337,10 +338,9 @@ public void testTopN() { } public void testProfile() { - EsqlQueryRequest request = EsqlQueryRequest.syncEsqlQueryRequest(); - request.pragmas(randomPragmas()); - request.query("from listens* | sort timestamp DESC | limit 1 | " + enrichSongCommand() + " | KEEP timestamp, artist"); - request.profile(true); + EsqlQueryRequest request = syncEsqlQueryRequest( + "from listens* | sort timestamp DESC | limit 1 | " + enrichSongCommand() + " | KEEP timestamp, artist" + ).pragmas(randomPragmas()).profile(true); try (var resp = run(request)) { Iterator row = resp.values().next(); assertThat(row.next(), equalTo(7L)); diff --git a/x-pack/plugin/esql/src/internalClusterTest/java/org/elasticsearch/xpack/esql/action/EsqlActionBreakerIT.java b/x-pack/plugin/esql/src/internalClusterTest/java/org/elasticsearch/xpack/esql/action/EsqlActionBreakerIT.java index 7a2cccdf680b3..0bd8d016b1298 100644 --- a/x-pack/plugin/esql/src/internalClusterTest/java/org/elasticsearch/xpack/esql/action/EsqlActionBreakerIT.java +++ b/x-pack/plugin/esql/src/internalClusterTest/java/org/elasticsearch/xpack/esql/action/EsqlActionBreakerIT.java @@ -36,6 +36,7 @@ import java.util.concurrent.TimeUnit; import static org.elasticsearch.transport.AbstractSimpleTransportTestCase.IGNORE_DESERIALIZATION_ERRORS_SETTING; +import static org.elasticsearch.xpack.esql.action.EsqlQueryRequest.syncEsqlQueryRequest; import static org.hamcrest.Matchers.containsString; import static org.hamcrest.Matchers.equalTo; import static org.hamcrest.Matchers.instanceOf; @@ -163,9 +164,7 @@ public void testBreaker() { setRequestCircuitBreakerLimit(ByteSizeValue.ofBytes(between(256, 512))); try { final ElasticsearchException e = expectThrows(ElasticsearchException.class, () -> { - var request = EsqlQueryRequest.syncEsqlQueryRequest(); - request.query("from test_breaker | stats count_distinct(foo) by bar"); - request.pragmas(randomPragmas()); + var request = syncEsqlQueryRequest("from test_breaker | stats count_distinct(foo) by bar").pragmas(randomPragmas()); try (var ignored = client().execute(EsqlQueryAction.INSTANCE, request).actionGet(2, TimeUnit.MINUTES)) { } diff --git a/x-pack/plugin/esql/src/internalClusterTest/java/org/elasticsearch/xpack/esql/action/EsqlActionIT.java b/x-pack/plugin/esql/src/internalClusterTest/java/org/elasticsearch/xpack/esql/action/EsqlActionIT.java index ec043b76c7c82..2b69497d8ac6f 100644 --- a/x-pack/plugin/esql/src/internalClusterTest/java/org/elasticsearch/xpack/esql/action/EsqlActionIT.java +++ b/x-pack/plugin/esql/src/internalClusterTest/java/org/elasticsearch/xpack/esql/action/EsqlActionIT.java @@ -151,7 +151,7 @@ public void testRow() { public void testRowWithFilter() { long value = randomLongBetween(0, Long.MAX_VALUE); - try (EsqlQueryResponse response = run(syncEsqlQueryRequest().query("ROW " + value).filter(randomQueryFilter()))) { + try (EsqlQueryResponse response = run(syncEsqlQueryRequest("ROW " + value).filter(randomQueryFilter()))) { assertEquals(List.of(List.of(value)), getValuesList(response)); } } @@ -161,7 +161,7 @@ public void testInvalidRowWithFilter() { expectThrows( VerificationException.class, containsString("Unknown column [x]"), - () -> run(syncEsqlQueryRequest().query("ROW " + value + " | EVAL x==NULL").filter(randomQueryFilter())) + () -> run(syncEsqlQueryRequest("ROW " + value + " | EVAL x==NULL").filter(randomQueryFilter())) ); } @@ -885,11 +885,10 @@ public void testESFilter() throws Exception { long to = randomBoolean() ? Long.MAX_VALUE : randomLongBetween(from, from + 1000); QueryBuilder filter = new RangeQueryBuilder("val").from(from, true).to(to, true); try ( - EsqlQueryResponse results = EsqlQueryRequestBuilder.newSyncEsqlQueryRequestBuilder(client()) - .query(command) - .filter(filter) - .pragmas(randomPragmas()) - .get() + EsqlQueryResponse results = client().execute( + EsqlQueryAction.INSTANCE, + syncEsqlQueryRequest(command).filter(filter).pragmas(randomPragmas()) + ).get() ) { logger.info(results); OptionalDouble avg = docs.values().stream().filter(v -> from <= v && v <= to).mapToLong(n -> n).average(); @@ -1973,7 +1972,7 @@ public void testScriptField() throws Exception { pragmaSettings.put("data_partitioning", "doc"); pragmas = new QueryPragmas(pragmaSettings.build()); } - try (EsqlQueryResponse resp = run(syncEsqlQueryRequest().query("FROM test-script | SORT k1 | LIMIT " + numDocs).pragmas(pragmas))) { + try (EsqlQueryResponse resp = run(syncEsqlQueryRequest("FROM test-script | SORT k1 | LIMIT " + numDocs).pragmas(pragmas))) { List k1Column = Iterators.toList(resp.column(0)); assertThat(k1Column, equalTo(LongStream.range(0L, numDocs).boxed().toList())); List k2Column = Iterators.toList(resp.column(1)); diff --git a/x-pack/plugin/esql/src/internalClusterTest/java/org/elasticsearch/xpack/esql/action/EsqlActionTaskIT.java b/x-pack/plugin/esql/src/internalClusterTest/java/org/elasticsearch/xpack/esql/action/EsqlActionTaskIT.java index bb797eeadf68a..e99e705f0ecae 100644 --- a/x-pack/plugin/esql/src/internalClusterTest/java/org/elasticsearch/xpack/esql/action/EsqlActionTaskIT.java +++ b/x-pack/plugin/esql/src/internalClusterTest/java/org/elasticsearch/xpack/esql/action/EsqlActionTaskIT.java @@ -60,6 +60,7 @@ import static org.elasticsearch.test.MapMatcher.assertMap; import static org.elasticsearch.test.MapMatcher.matchesMap; +import static org.elasticsearch.xpack.esql.action.EsqlQueryRequest.syncEsqlQueryRequest; import static org.hamcrest.Matchers.anyOf; import static org.hamcrest.Matchers.both; import static org.hamcrest.Matchers.containsString; @@ -316,8 +317,7 @@ private ActionFuture startEsql(String query) { settingsBuilder.put("node_level_reduction", false); } - var pragmas = new QueryPragmas(settingsBuilder.build()); - return EsqlQueryRequestBuilder.newSyncEsqlQueryRequestBuilder(client()).query(query).pragmas(pragmas).execute(); + return client().execute(EsqlQueryAction.INSTANCE, syncEsqlQueryRequest(query).pragmas(new QueryPragmas(settingsBuilder.build()))); } private void cancelTask(TaskId taskId) { @@ -481,16 +481,13 @@ protected void doRun() throws Exception { try { scriptPermits.release(numberOfDocs()); // do not block Lucene operators Client client = client(coordinator); - EsqlQueryRequest request = EsqlQueryRequest.syncEsqlQueryRequest(); client().admin() .indices() .prepareUpdateSettings("test") .setSettings(Settings.builder().put("index.routing.allocation.include._name", dataNode).build()) .get(); ensureYellowAndNoInitializingShards("test"); - request.query("FROM test | LIMIT 10"); - QueryPragmas pragmas = randomPragmas(); - request.pragmas(pragmas); + EsqlQueryRequest request = syncEsqlQueryRequest("FROM test | LIMIT 10").pragmas(randomPragmas()); PlainActionFuture future = new PlainActionFuture<>(); client.execute(EsqlQueryAction.INSTANCE, request, future); ExchangeService exchangeService = internalCluster().getInstance(ExchangeService.class, dataNode); diff --git a/x-pack/plugin/esql/src/internalClusterTest/java/org/elasticsearch/xpack/esql/action/EsqlAsyncActionIT.java b/x-pack/plugin/esql/src/internalClusterTest/java/org/elasticsearch/xpack/esql/action/EsqlAsyncActionIT.java index aac22ca1e6bd2..993ad24c8ddcf 100644 --- a/x-pack/plugin/esql/src/internalClusterTest/java/org/elasticsearch/xpack/esql/action/EsqlAsyncActionIT.java +++ b/x-pack/plugin/esql/src/internalClusterTest/java/org/elasticsearch/xpack/esql/action/EsqlAsyncActionIT.java @@ -50,8 +50,7 @@ protected Collection> nodePlugins() { @Override public EsqlQueryResponse run(EsqlQueryRequest original) { - EsqlQueryRequest request = EsqlQueryRequest.asyncEsqlQueryRequest(); - request.query(original.query()); + EsqlQueryRequest request = EsqlQueryRequest.asyncEsqlQueryRequest(original.query()); request.pragmas(original.pragmas()); // deliberately small timeout, to frequently trigger incomplete response request.waitForCompletionTimeout(TimeValue.timeValueNanos(1)); diff --git a/x-pack/plugin/esql/src/internalClusterTest/java/org/elasticsearch/xpack/esql/action/EsqlAsyncTestUtils.java b/x-pack/plugin/esql/src/internalClusterTest/java/org/elasticsearch/xpack/esql/action/EsqlAsyncTestUtils.java index ca10e5d3419ac..d07bb555ca434 100644 --- a/x-pack/plugin/esql/src/internalClusterTest/java/org/elasticsearch/xpack/esql/action/EsqlAsyncTestUtils.java +++ b/x-pack/plugin/esql/src/internalClusterTest/java/org/elasticsearch/xpack/esql/action/EsqlAsyncTestUtils.java @@ -69,8 +69,7 @@ public static EsqlQueryResponse runAsyncQuery( TimeValue waitCompletionTime, @Nullable Map pragmas ) { - EsqlQueryRequest request = EsqlQueryRequest.asyncEsqlQueryRequest(); - request.query(query); + EsqlQueryRequest request = EsqlQueryRequest.asyncEsqlQueryRequest(query); request.pragmas(randomPragmasWithOverride(pragmas)); request.profile(randomInt(5) == 2); request.columnar(randomBoolean()); diff --git a/x-pack/plugin/esql/src/internalClusterTest/java/org/elasticsearch/xpack/esql/action/EsqlListQueriesActionIT.java b/x-pack/plugin/esql/src/internalClusterTest/java/org/elasticsearch/xpack/esql/action/EsqlListQueriesActionIT.java index c7072e217dd5b..3df2d1cf5b043 100644 --- a/x-pack/plugin/esql/src/internalClusterTest/java/org/elasticsearch/xpack/esql/action/EsqlListQueriesActionIT.java +++ b/x-pack/plugin/esql/src/internalClusterTest/java/org/elasticsearch/xpack/esql/action/EsqlListQueriesActionIT.java @@ -21,6 +21,8 @@ import static org.elasticsearch.core.TimeValue.timeValueSeconds; import static org.elasticsearch.xpack.esql.EsqlTestUtils.jsonEntityToMap; +import static org.elasticsearch.xpack.esql.action.EsqlQueryRequest.asyncEsqlQueryRequest; +import static org.elasticsearch.xpack.esql.action.EsqlQueryRequest.syncEsqlQueryRequest; import static org.hamcrest.Matchers.is; public class EsqlListQueriesActionIT extends AbstractPausableIntegTestCase { @@ -90,12 +92,12 @@ private static void assertRunningQueries() throws IOException { private EsqlQueryResponse sendAsyncQuery() { scriptPermits.drainPermits(); scriptPermits.release(between(1, 5)); - return EsqlQueryRequestBuilder.newAsyncEsqlQueryRequestBuilder(client()).query(QUERY).execute().actionGet(60, TimeUnit.SECONDS); + return client().execute(EsqlQueryAction.INSTANCE, asyncEsqlQueryRequest(QUERY)).actionGet(60, TimeUnit.SECONDS); } private ActionFuture sendSyncQueryAsyncly() { scriptPermits.drainPermits(); scriptPermits.release(between(1, 5)); - return EsqlQueryRequestBuilder.newSyncEsqlQueryRequestBuilder(client()).query(QUERY).execute(); + return client().execute(EsqlQueryAction.INSTANCE, syncEsqlQueryRequest(QUERY)); } } diff --git a/x-pack/plugin/esql/src/internalClusterTest/java/org/elasticsearch/xpack/esql/action/EsqlQueryLogIT.java b/x-pack/plugin/esql/src/internalClusterTest/java/org/elasticsearch/xpack/esql/action/EsqlQueryLogIT.java index fd5b57d3ca77a..45c4c26f43468 100644 --- a/x-pack/plugin/esql/src/internalClusterTest/java/org/elasticsearch/xpack/esql/action/EsqlQueryLogIT.java +++ b/x-pack/plugin/esql/src/internalClusterTest/java/org/elasticsearch/xpack/esql/action/EsqlQueryLogIT.java @@ -31,6 +31,7 @@ import java.util.concurrent.ExecutionException; import static org.elasticsearch.test.hamcrest.ElasticsearchAssertions.assertAcked; +import static org.elasticsearch.xpack.esql.action.EsqlQueryRequest.syncEsqlQueryRequest; import static org.elasticsearch.xpack.esql.querylog.EsqlQueryLog.ELASTICSEARCH_QUERYLOG_ERROR_MESSAGE; import static org.elasticsearch.xpack.esql.querylog.EsqlQueryLog.ELASTICSEARCH_QUERYLOG_ERROR_TYPE; import static org.elasticsearch.xpack.esql.querylog.EsqlQueryLog.ELASTICSEARCH_QUERYLOG_PLANNING_TOOK; @@ -164,9 +165,7 @@ private static void testAllLevels( ) ).get(); - EsqlQueryRequest request = EsqlQueryRequest.syncEsqlQueryRequest(); - request.query(query); - request.pragmas(randomPragmas()); + EsqlQueryRequest request = syncEsqlQueryRequest(query).pragmas(randomPragmas()); CountDownLatch latch = new CountDownLatch(1); client(coordinator.getName()).execute(EsqlQueryAction.INSTANCE, request, ActionListener.running(() -> { try { diff --git a/x-pack/plugin/esql/src/internalClusterTest/java/org/elasticsearch/xpack/esql/action/EsqlReductionLateMaterializationTestCase.java b/x-pack/plugin/esql/src/internalClusterTest/java/org/elasticsearch/xpack/esql/action/EsqlReductionLateMaterializationTestCase.java index 8f4ddeeb7a473..42bbc8d9e4954 100644 --- a/x-pack/plugin/esql/src/internalClusterTest/java/org/elasticsearch/xpack/esql/action/EsqlReductionLateMaterializationTestCase.java +++ b/x-pack/plugin/esql/src/internalClusterTest/java/org/elasticsearch/xpack/esql/action/EsqlReductionLateMaterializationTestCase.java @@ -30,6 +30,7 @@ import java.util.stream.IntStream; import static org.elasticsearch.xpack.esql.EsqlTestUtils.singleValue; +import static org.elasticsearch.xpack.esql.action.EsqlQueryRequest.syncEsqlQueryRequest; import static org.hamcrest.Matchers.equalTo; import static org.hamcrest.Matchers.greaterThan; import static org.hamcrest.Matchers.hasSize; @@ -145,10 +146,10 @@ private static void assertSingleKeyFieldExtracted(EsqlQueryResponse response, St } private EsqlQueryResponse sendQuery(String query) { - return EsqlQueryRequestBuilder.newSyncEsqlQueryRequestBuilder(client()) - // Ensures there is no TopN pushdown to lucene, and that the pause happens after the TopN operator has been applied. - .query(query) - .pragmas( + // Ensures there is no TopN pushdown to lucene, and that the pause happens after the TopN operator has been applied. + return client().execute( + EsqlQueryAction.INSTANCE, + syncEsqlQueryRequest(query).pragmas( new QueryPragmas( Settings.builder() // Configured to ensure that there is only one worker handling all the shards, so that we can assert the correct @@ -159,9 +160,7 @@ private EsqlQueryResponse sendQuery(String query) { .put(QueryPragmas.NODE_LEVEL_REDUCTION.getKey(), true) .build() ) - ) - .profile(true) - .execute() - .actionGet(1, TimeUnit.MINUTES); + ).profile(true) + ).actionGet(1, TimeUnit.MINUTES); } } diff --git a/x-pack/plugin/esql/src/internalClusterTest/java/org/elasticsearch/xpack/esql/action/EsqlTopNShardManagementIT.java b/x-pack/plugin/esql/src/internalClusterTest/java/org/elasticsearch/xpack/esql/action/EsqlTopNShardManagementIT.java index ce62d2aeb897f..ddf4f66b186d0 100644 --- a/x-pack/plugin/esql/src/internalClusterTest/java/org/elasticsearch/xpack/esql/action/EsqlTopNShardManagementIT.java +++ b/x-pack/plugin/esql/src/internalClusterTest/java/org/elasticsearch/xpack/esql/action/EsqlTopNShardManagementIT.java @@ -26,6 +26,7 @@ import java.util.concurrent.TimeUnit; import static org.elasticsearch.core.TimeValue.timeValueSeconds; +import static org.elasticsearch.xpack.esql.action.EsqlQueryRequest.asyncEsqlQueryRequest; import static org.hamcrest.Matchers.equalTo; import static org.hamcrest.Matchers.greaterThan; import static org.hamcrest.Matchers.greaterThanOrEqualTo; @@ -81,10 +82,10 @@ public void testTopNOperatorReleasesContexts() throws Exception { private static EsqlQueryResponse sendAsyncQuery() { scriptPermits.drainPermits(); - return EsqlQueryRequestBuilder.newAsyncEsqlQueryRequestBuilder(client()) - // Ensures there is no TopN pushdown to lucene, and that the pause happens after the TopN operator has been applied. - .query("from test | sort foo + 1 | limit 1 | where pause_me + 1 < 42 | stats sum(pause_me)") - .pragmas( + // Ensures there is no TopN pushdown to lucene, and that the pause happens after the TopN operator has been applied. + return client().execute( + EsqlQueryAction.INSTANCE, + asyncEsqlQueryRequest("from test | sort foo + 1 | limit 1 | where pause_me + 1 < 42 | stats sum(pause_me)").pragmas( new QueryPragmas( Settings.builder() // Configured to ensure that there is only one worker handling all the shards, so that we can assert the correct @@ -95,8 +96,7 @@ private static EsqlQueryResponse sendAsyncQuery() { .build() ) ) - .execute() - .actionGet(1, TimeUnit.MINUTES); + ).actionGet(1, TimeUnit.MINUTES); } @Override diff --git a/x-pack/plugin/esql/src/internalClusterTest/java/org/elasticsearch/xpack/esql/action/ForkIT.java b/x-pack/plugin/esql/src/internalClusterTest/java/org/elasticsearch/xpack/esql/action/ForkIT.java index 395ba216ca878..8b6b6843c3d79 100644 --- a/x-pack/plugin/esql/src/internalClusterTest/java/org/elasticsearch/xpack/esql/action/ForkIT.java +++ b/x-pack/plugin/esql/src/internalClusterTest/java/org/elasticsearch/xpack/esql/action/ForkIT.java @@ -25,6 +25,7 @@ import static org.elasticsearch.test.hamcrest.ElasticsearchAssertions.assertAcked; import static org.elasticsearch.xpack.esql.EsqlTestUtils.getValuesList; +import static org.elasticsearch.xpack.esql.action.EsqlQueryRequest.syncEsqlQueryRequest; import static org.hamcrest.Matchers.equalTo; // @TestLogging(value = "org.elasticsearch.xpack.esql:TRACE,org.elasticsearch.compute:TRACE", reason = "debug") @@ -1035,13 +1036,7 @@ public void testProfile() { | KEEP _fork, id, content """; - EsqlQueryRequest request = EsqlQueryRequest.syncEsqlQueryRequest(); - - request.pragmas(randomPragmas()); - request.query(query); - request.profile(true); - - try (var resp = run(request)) { + try (var resp = run(syncEsqlQueryRequest(query).pragmas(randomPragmas()).profile(true))) { EsqlQueryResponse.Profile profile = resp.profile(); assertNotNull(profile); diff --git a/x-pack/plugin/esql/src/internalClusterTest/java/org/elasticsearch/xpack/esql/action/LookupJoinTypesIT.java b/x-pack/plugin/esql/src/internalClusterTest/java/org/elasticsearch/xpack/esql/action/LookupJoinTypesIT.java index dc17e8b7e5f81..4f899e12eecfa 100644 --- a/x-pack/plugin/esql/src/internalClusterTest/java/org/elasticsearch/xpack/esql/action/LookupJoinTypesIT.java +++ b/x-pack/plugin/esql/src/internalClusterTest/java/org/elasticsearch/xpack/esql/action/LookupJoinTypesIT.java @@ -49,6 +49,7 @@ import static org.elasticsearch.test.ESIntegTestCase.Scope.SUITE; import static org.elasticsearch.test.hamcrest.ElasticsearchAssertions.assertAcked; +import static org.elasticsearch.xpack.esql.action.EsqlQueryRequest.syncEsqlQueryRequest; import static org.elasticsearch.xpack.esql.core.type.DataType.AGGREGATE_METRIC_DOUBLE; import static org.elasticsearch.xpack.esql.core.type.DataType.BOOLEAN; import static org.elasticsearch.xpack.esql.core.type.DataType.BYTE; @@ -862,7 +863,7 @@ private static String propertySpecFor(String fieldName, DataType type) { private static void validateIndex(String indexName, String fieldName, Object expectedValue) { String query = String.format(Locale.ROOT, "FROM %s | KEEP %s", indexName, fieldName); - try (var response = EsqlQueryRequestBuilder.newRequestBuilder(client()).query(query).get()) { + try (var response = client().execute(EsqlQueryAction.INSTANCE, syncEsqlQueryRequest(query)).actionGet()) { ColumnInfo info = response.response().columns().getFirst(); assertThat("Expected index '" + indexName + "' to have column '" + fieldName + ": " + query, info.name(), is(fieldName)); Iterator results = response.response().column(0).iterator(); @@ -879,7 +880,7 @@ private record TestConfigPasses(DataType mainType, DataType lookupType, BinaryCo @Override public void doTest() { String query = testQuery(operation); - try (var response = EsqlQueryRequestBuilder.newRequestBuilder(client()).query(query).get()) { + try (var response = client().execute(EsqlQueryAction.INSTANCE, syncEsqlQueryRequest(query)).actionGet()) { Iterator results = response.response().column(0).iterator(); assertTrue("Expected at least one result for query: " + query, results.hasNext()); Object indexedResult = response.response().column(0).iterator().next(); @@ -975,7 +976,7 @@ public String testQuery(BinaryComparisonOperation operation) { @Override public void doTest() { String query = testQuery(operation); - try (var response = EsqlQueryRequestBuilder.newRequestBuilder(client()).query(query).get()) { + try (var response = client().execute(EsqlQueryAction.INSTANCE, syncEsqlQueryRequest(query)).actionGet()) { Iterator results = response.response().column(0).iterator(); assertTrue("Expected at least two results for query, but result was empty: " + query, results.hasNext()); @@ -1016,7 +1017,7 @@ public void doTest() { "Expected exception " + exception().getSimpleName() + " but no exception was thrown: " + query, () -> { // noinspection EmptyTryBlock - try (var ignored = EsqlQueryRequestBuilder.newRequestBuilder(client()).query(query).get()) { + try (var ignored = client().execute(EsqlQueryAction.INSTANCE, syncEsqlQueryRequest(query)).actionGet()) { // We use try-with-resources to ensure the request is closed if the exception is not thrown (less cluttered errors) } } diff --git a/x-pack/plugin/esql/src/internalClusterTest/java/org/elasticsearch/xpack/esql/action/ManyShardsIT.java b/x-pack/plugin/esql/src/internalClusterTest/java/org/elasticsearch/xpack/esql/action/ManyShardsIT.java index 69f3c4a914c97..0e64e1acc57d3 100644 --- a/x-pack/plugin/esql/src/internalClusterTest/java/org/elasticsearch/xpack/esql/action/ManyShardsIT.java +++ b/x-pack/plugin/esql/src/internalClusterTest/java/org/elasticsearch/xpack/esql/action/ManyShardsIT.java @@ -119,7 +119,7 @@ public void testConcurrentQueries() throws Exception { } try ( var response = run( - syncEsqlQueryRequest().query("from test-* | stats count(user) by tags").pragmas(new QueryPragmas(pragmas.build())) + syncEsqlQueryRequest("from test-* | stats count(user) by tags").pragmas(new QueryPragmas(pragmas.build())) ) ) { // do nothing @@ -259,7 +259,7 @@ public void testLimitConcurrentShards() { mockSearchService.setOnCreateSearchContext(r -> counter.onNewContext()); mockSearchService.setOnRemoveContext(r -> counter.onContextReleased()); } - run(syncEsqlQueryRequest().query(q).pragmas(pragmas)).close(); + run(syncEsqlQueryRequest(q).pragmas(pragmas)).close(); } } finally { for (SearchService searchService : searchServices) { @@ -286,9 +286,9 @@ public void testCancelUnnecessaryRequests() { connection.sendRequest(requestId, action, request, options); }); - var query = syncEsqlQueryRequest(); - query.query("from test-* | LIMIT 1"); - query.pragmas(new QueryPragmas(Settings.builder().put(QueryPragmas.MAX_CONCURRENT_NODES_PER_CLUSTER.getKey(), 1).build())); + var query = syncEsqlQueryRequest("from test-* | LIMIT 1").pragmas( + new QueryPragmas(Settings.builder().put(QueryPragmas.MAX_CONCURRENT_NODES_PER_CLUSTER.getKey(), 1).build()) + ); try (var result = safeGet(client().execute(EsqlQueryAction.INSTANCE, query))) { assertThat(Iterables.size(result.rows()), equalTo(1L)); diff --git a/x-pack/plugin/esql/src/internalClusterTest/java/org/elasticsearch/xpack/esql/action/QueryExecutionMetadataIT.java b/x-pack/plugin/esql/src/internalClusterTest/java/org/elasticsearch/xpack/esql/action/QueryExecutionMetadataIT.java index 6e0594e5c1f08..1f2f71f3025cf 100644 --- a/x-pack/plugin/esql/src/internalClusterTest/java/org/elasticsearch/xpack/esql/action/QueryExecutionMetadataIT.java +++ b/x-pack/plugin/esql/src/internalClusterTest/java/org/elasticsearch/xpack/esql/action/QueryExecutionMetadataIT.java @@ -15,6 +15,7 @@ import java.util.Set; import static org.elasticsearch.xpack.esql.EsqlTestUtils.getValuesList; +import static org.elasticsearch.xpack.esql.action.EsqlQueryRequest.syncEsqlQueryRequest; import static org.hamcrest.Matchers.equalTo; import static org.hamcrest.Matchers.greaterThanOrEqualTo; import static org.hamcrest.Matchers.hasSize; @@ -35,8 +36,7 @@ protected void assertClusterInfoSuccess(EsqlExecutionInfo.Cluster clusterInfo, i } protected EsqlQueryResponse runQueryWithMetadata(String query, Boolean includeExecutionMetadata) { - EsqlQueryRequest request = EsqlQueryRequest.syncEsqlQueryRequest(); - request.query(query); + EsqlQueryRequest request = syncEsqlQueryRequest(query); request.pragmas(AbstractEsqlIntegTestCase.randomPragmas()); request.profile(randomInt(5) == 2); request.columnar(randomBoolean()); diff --git a/x-pack/plugin/esql/src/internalClusterTest/java/org/elasticsearch/xpack/esql/action/TelemetryIT.java b/x-pack/plugin/esql/src/internalClusterTest/java/org/elasticsearch/xpack/esql/action/TelemetryIT.java index 620560e27340b..6d498deb11986 100644 --- a/x-pack/plugin/esql/src/internalClusterTest/java/org/elasticsearch/xpack/esql/action/TelemetryIT.java +++ b/x-pack/plugin/esql/src/internalClusterTest/java/org/elasticsearch/xpack/esql/action/TelemetryIT.java @@ -32,6 +32,7 @@ import java.util.stream.Collectors; import static org.elasticsearch.test.hamcrest.ElasticsearchAssertions.assertAcked; +import static org.elasticsearch.xpack.esql.action.EsqlQueryRequest.syncEsqlQueryRequest; import static org.hamcrest.Matchers.hasSize; import static org.hamcrest.Matchers.is; @@ -309,10 +310,7 @@ private static Set featureNames(List functionMeasurements) } private static EsqlQueryRequest executeQuery(String query) { - EsqlQueryRequest request = EsqlQueryRequest.syncEsqlQueryRequest(); - request.query(query); - request.pragmas(randomPragmas()); - return request; + return syncEsqlQueryRequest(query).pragmas(randomPragmas()); } private static void loadData(String nodeName) { diff --git a/x-pack/plugin/esql/src/internalClusterTest/java/org/elasticsearch/xpack/esql/action/TimeBasedIndicesIT.java b/x-pack/plugin/esql/src/internalClusterTest/java/org/elasticsearch/xpack/esql/action/TimeBasedIndicesIT.java index 006e1922afeed..9784e02346159 100644 --- a/x-pack/plugin/esql/src/internalClusterTest/java/org/elasticsearch/xpack/esql/action/TimeBasedIndicesIT.java +++ b/x-pack/plugin/esql/src/internalClusterTest/java/org/elasticsearch/xpack/esql/action/TimeBasedIndicesIT.java @@ -40,7 +40,7 @@ public void testFilter() { { String query = "FROM test | limit 1000"; var filter = new RangeQueryBuilder("@timestamp").from(epoch - TimeValue.timeValueHours(3).millis()).to("now"); - try (var resp = run(syncEsqlQueryRequest().query(query).filter(filter))) { + try (var resp = run(syncEsqlQueryRequest(query).filter(filter))) { List> values = getValuesList(resp); assertThat(values, hasSize(oldDocs)); } @@ -48,7 +48,7 @@ public void testFilter() { { String query = "FROM test | limit 1000"; var filter = new RangeQueryBuilder("@timestamp").from("now").to(epoch + TimeValue.timeValueHours(3).millis()); - try (var resp = run(syncEsqlQueryRequest().query(query).filter(filter))) { + try (var resp = run(syncEsqlQueryRequest(query).filter(filter))) { List> values = getValuesList(resp); assertThat(values, hasSize(newDocs)); } diff --git a/x-pack/plugin/esql/src/internalClusterTest/java/org/elasticsearch/xpack/esql/action/WarningsIT.java b/x-pack/plugin/esql/src/internalClusterTest/java/org/elasticsearch/xpack/esql/action/WarningsIT.java index 5b2425f18d62b..a00a9dfa6b1db 100644 --- a/x-pack/plugin/esql/src/internalClusterTest/java/org/elasticsearch/xpack/esql/action/WarningsIT.java +++ b/x-pack/plugin/esql/src/internalClusterTest/java/org/elasticsearch/xpack/esql/action/WarningsIT.java @@ -68,9 +68,9 @@ public void testCollectWarnings() throws Exception { DiscoveryNode coordinator = randomFrom(clusterService().state().nodes().stream().toList()); client().admin().indices().prepareRefresh("index-1", "index-2").get(); - EsqlQueryRequest request = EsqlQueryRequest.syncEsqlQueryRequest(); - request.query("FROM index-* | EVAL ip = to_ip(host) | STATS s = COUNT(*) by ip | KEEP ip | LIMIT 100"); - request.pragmas(randomPragmas()); + EsqlQueryRequest request = EsqlQueryRequest.syncEsqlQueryRequest( + "FROM index-* | EVAL ip = to_ip(host) | STATS s = COUNT(*) by ip | KEEP ip | LIMIT 100" + ).pragmas(randomPragmas()); CountDownLatch latch = new CountDownLatch(1); client(coordinator.getName()).execute(EsqlQueryAction.INSTANCE, request, ActionListener.running(() -> { try { diff --git a/x-pack/plugin/esql/src/internalClusterTest/java/org/elasticsearch/xpack/esql/plugin/CanMatchIT.java b/x-pack/plugin/esql/src/internalClusterTest/java/org/elasticsearch/xpack/esql/plugin/CanMatchIT.java index 29a2fd342eb34..28b520d4c582c 100644 --- a/x-pack/plugin/esql/src/internalClusterTest/java/org/elasticsearch/xpack/esql/plugin/CanMatchIT.java +++ b/x-pack/plugin/esql/src/internalClusterTest/java/org/elasticsearch/xpack/esql/plugin/CanMatchIT.java @@ -86,8 +86,7 @@ public void testCanMatch() { } try ( EsqlQueryResponse resp = run( - syncEsqlQueryRequest().query("from events_*") - .pragmas(randomPragmas()) + syncEsqlQueryRequest("from events_*").pragmas(randomPragmas()) .filter(new RangeQueryBuilder("@timestamp").gte("2023-01-01")) ) ) { @@ -103,8 +102,7 @@ public void testCanMatch() { try ( EsqlQueryResponse resp = run( - syncEsqlQueryRequest().query("from events_*") - .pragmas(randomPragmas()) + syncEsqlQueryRequest("from events_*").pragmas(randomPragmas()) .filter(new RangeQueryBuilder("@timestamp").lt("2023-01-01")) ) ) { @@ -120,8 +118,7 @@ public void testCanMatch() { try ( EsqlQueryResponse resp = run( - syncEsqlQueryRequest().query("from events_*") - .pragmas(randomPragmas()) + syncEsqlQueryRequest("from events_*").pragmas(randomPragmas()) .filter(new RangeQueryBuilder("@timestamp").gt("2022-01-01").lt("2023-12-31")) ) ) { @@ -143,8 +140,7 @@ public void testCanMatch() { try ( EsqlQueryResponse resp = run( - syncEsqlQueryRequest().query("from events_*") - .pragmas(randomPragmas()) + syncEsqlQueryRequest("from events_*").pragmas(randomPragmas()) .filter(new RangeQueryBuilder("@timestamp").gt("2021-01-01").lt("2021-12-31")) ) ) { @@ -204,8 +200,7 @@ public void testAliasFilters() { try ( var resp = run( - syncEsqlQueryRequest().query("from employees | stats count(emp_no)") - .pragmas(randomPragmas()) + syncEsqlQueryRequest("from employees | stats count(emp_no)").pragmas(randomPragmas()) .filter(new RangeQueryBuilder("hired").lt("2012-04-30")) ) ) { @@ -213,8 +208,7 @@ public void testAliasFilters() { } try ( var resp = run( - syncEsqlQueryRequest().query("from employees | stats avg(salary)") - .pragmas(randomPragmas()) + syncEsqlQueryRequest("from employees | stats avg(salary)").pragmas(randomPragmas()) .filter(new RangeQueryBuilder("hired").lt("2012-04-30")) ) ) { @@ -231,8 +225,7 @@ public void testAliasFilters() { try ( var resp = run( - syncEsqlQueryRequest().query("from e* | stats count(emp_no)") - .pragmas(randomPragmas()) + syncEsqlQueryRequest("from e* | stats count(emp_no)").pragmas(randomPragmas()) .filter(new RangeQueryBuilder("hired").lt("2012-04-30")) ) ) { @@ -240,8 +233,7 @@ public void testAliasFilters() { } try ( var resp = run( - syncEsqlQueryRequest().query("from e* | stats avg(salary)") - .pragmas(randomPragmas()) + syncEsqlQueryRequest("from e* | stats avg(salary)").pragmas(randomPragmas()) .filter(new RangeQueryBuilder("hired").lt("2012-04-30")) ) ) { @@ -258,8 +250,7 @@ public void testAliasFilters() { try ( var resp = run( - syncEsqlQueryRequest().query("from engineer* | stats count(emp_no)") - .pragmas(randomPragmas()) + syncEsqlQueryRequest("from engineer* | stats count(emp_no)").pragmas(randomPragmas()) .filter(new RangeQueryBuilder("hired").lt("2012-04-30")) ) ) { @@ -267,8 +258,7 @@ public void testAliasFilters() { } try ( var resp = run( - syncEsqlQueryRequest().query("from engineer* | stats avg(salary)") - .pragmas(randomPragmas()) + syncEsqlQueryRequest("from engineer* | stats avg(salary)").pragmas(randomPragmas()) .filter(new RangeQueryBuilder("hired").lt("2012-04-30")) ) ) { @@ -285,8 +275,7 @@ public void testAliasFilters() { try ( var resp = run( - syncEsqlQueryRequest().query("from sales | stats count(emp_no)") - .pragmas(randomPragmas()) + syncEsqlQueryRequest("from sales | stats count(emp_no)").pragmas(randomPragmas()) .filter(new RangeQueryBuilder("hired").lt("2012-04-30")) ) ) { @@ -294,8 +283,7 @@ public void testAliasFilters() { } try ( var resp = run( - syncEsqlQueryRequest().query("from sales | stats avg(salary)") - .pragmas(randomPragmas()) + syncEsqlQueryRequest("from sales | stats avg(salary)").pragmas(randomPragmas()) .filter(new RangeQueryBuilder("hired").lt("2012-04-30")) ) ) { @@ -359,11 +347,7 @@ public void testFailOnUnavailableShards() throws Exception { containsString("index [logs] has no active shard copy"), () -> run("from * | KEEP timestamp,message") ); - try ( - EsqlQueryResponse resp = run( - syncEsqlQueryRequest().query("from events,logs | KEEP timestamp,message").allowPartialResults(true) - ) - ) { + try (EsqlQueryResponse resp = run(syncEsqlQueryRequest("from events,logs | KEEP timestamp,message").allowPartialResults(true))) { assertTrue(resp.isPartial()); EsqlExecutionInfo.Cluster local = resp.getExecutionInfo().getCluster(RemoteClusterAware.LOCAL_CLUSTER_GROUP_KEY); assertThat(local.getFailures(), hasSize(1)); diff --git a/x-pack/plugin/esql/src/internalClusterTest/java/org/elasticsearch/xpack/esql/plugin/IndexResolutionIT.java b/x-pack/plugin/esql/src/internalClusterTest/java/org/elasticsearch/xpack/esql/plugin/IndexResolutionIT.java index a5fcbcb9f1ca1..11b35dee31fc2 100644 --- a/x-pack/plugin/esql/src/internalClusterTest/java/org/elasticsearch/xpack/esql/plugin/IndexResolutionIT.java +++ b/x-pack/plugin/esql/src/internalClusterTest/java/org/elasticsearch/xpack/esql/plugin/IndexResolutionIT.java @@ -49,7 +49,7 @@ public void testResolvesConcreteIndex() { assertAcked(client().admin().indices().prepareCreate("index-1")); indexRandom(true, "index-1", 1); - try (var response = run(syncEsqlQueryRequest().query("FROM index-1"))) { + try (var response = run(syncEsqlQueryRequest("FROM index-1"))) { assertOk(response); } } @@ -59,7 +59,7 @@ public void testResolvesAlias() { indexRandom(true, "index-1", 1); assertAcked(client().admin().indices().prepareAliases(TEST_REQUEST_TIMEOUT, TEST_REQUEST_TIMEOUT).addAlias("index-1", "alias-1")); - try (var response = run(syncEsqlQueryRequest().query("FROM alias-1"))) { + try (var response = run(syncEsqlQueryRequest("FROM alias-1"))) { assertOk(response); } } @@ -83,7 +83,7 @@ public void testResolvesDataStream() { ) ); - try (var response = run(syncEsqlQueryRequest().query("FROM data-stream-1"))) { + try (var response = run(syncEsqlQueryRequest("FROM data-stream-1"))) { assertOk(response); } } @@ -94,7 +94,7 @@ public void testResolvesPattern() { assertAcked(client().admin().indices().prepareCreate("index-2")); indexRandom(true, "index-2", 1); - try (var response = run(syncEsqlQueryRequest().query("FROM index-*"))) { + try (var response = run(syncEsqlQueryRequest("FROM index-*"))) { assertOk(response); } } @@ -105,18 +105,18 @@ public void testResolvesExclusionPattern() { assertAcked(client().admin().indices().prepareCreate("index-2")); indexRandom(true, "index-2", 1); - try (var response = run(syncEsqlQueryRequest().query("FROM index*,-index-2 METADATA _index"))) { + try (var response = run(syncEsqlQueryRequest("FROM index*,-index-2 METADATA _index"))) { assertOk(response); assertResultConcreteIndices(response, "index-1");// excludes concrete index from pattern } - try (var response = run(syncEsqlQueryRequest().query("FROM index*,-*2 METADATA _index"))) { + try (var response = run(syncEsqlQueryRequest("FROM index*,-*2 METADATA _index"))) { assertOk(response); assertResultConcreteIndices(response, "index-1");// excludes pattern from pattern } expectThrows( VerificationException.class, containsString("Unknown index [index-*,-*]"), - () -> run(syncEsqlQueryRequest().query("FROM index-*,-* METADATA _index")) // exclude all resolves to empty + () -> run(syncEsqlQueryRequest("FROM index-*,-* METADATA _index")) // exclude all resolves to empty ); } @@ -127,10 +127,10 @@ public void testDoesNotResolveEmptyPattern() { expectThrows( VerificationException.class, containsString("Unknown index [index-*]"), - () -> run(syncEsqlQueryRequest().query("FROM index-* METADATA _index")) + () -> run(syncEsqlQueryRequest("FROM index-* METADATA _index")) ); - try (var response = run(syncEsqlQueryRequest().query("FROM data,index-* METADATA _index"))) { + try (var response = run(syncEsqlQueryRequest("FROM data,index-* METADATA _index"))) { assertOk(response); assertResultConcreteIndices(response, "data"); } @@ -140,7 +140,7 @@ public void testDoesNotResolveUnknownIndex() { expectThrows( VerificationException.class, containsString("Unknown index [no-such-index]"), - () -> run(syncEsqlQueryRequest().query("FROM no-such-index")) + () -> run(syncEsqlQueryRequest("FROM no-such-index")) ); } @@ -157,14 +157,14 @@ public void testDoesNotResolveClosedIndex() { expectThrows( ClusterBlockException.class, containsString("index [index-1] blocked by: [FORBIDDEN/4/index closed]"), - () -> run(syncEsqlQueryRequest().query("FROM index-1")) + () -> run(syncEsqlQueryRequest("FROM index-1")) ); expectThrows( ClusterBlockException.class, containsString("index [index-1] blocked by: [FORBIDDEN/4/index closed]"), - () -> run(syncEsqlQueryRequest().query("FROM index-1,index-2")) + () -> run(syncEsqlQueryRequest("FROM index-1,index-2")) ); - try (var response = run(syncEsqlQueryRequest().query("FROM index-* METADATA _index"))) { + try (var response = run(syncEsqlQueryRequest("FROM index-* METADATA _index"))) { assertOk(response); assertResultConcreteIndices(response, "index-2"); // only open index-2 matches } @@ -181,15 +181,15 @@ public void testHiddenIndices() { ); indexRandom(true, ".hidden-index-1", 1); - try (var response = run(syncEsqlQueryRequest().query("FROM .hidden-index-1 METADATA _index"))) { + try (var response = run(syncEsqlQueryRequest("FROM .hidden-index-1 METADATA _index"))) { assertOk(response); assertResultConcreteIndices(response, ".hidden-index-1"); } - try (var response = run(syncEsqlQueryRequest().query("FROM *-index-1 METADATA _index"))) { + try (var response = run(syncEsqlQueryRequest("FROM *-index-1 METADATA _index"))) { assertOk(response); assertResultConcreteIndices(response, "regular-index-1"); // only non-hidden index matches when specifying pattern } - try (var response = run(syncEsqlQueryRequest().query("FROM .hidden-* METADATA _index"))) { + try (var response = run(syncEsqlQueryRequest("FROM .hidden-* METADATA _index"))) { assertOk(response); assertResultConcreteIndices(response, ".hidden-index-1"); // hidden indices do match when specifying hidden/dot pattern } @@ -209,22 +209,22 @@ public void testUnavailableIndex() { expectThrows( NoShardAvailableActionException.class, containsString("index [unavailable-index-1] has no active shard copy"), - () -> run(syncEsqlQueryRequest().query("FROM unavailable-index-1")) + () -> run(syncEsqlQueryRequest("FROM unavailable-index-1")) ); expectThrows( NoShardAvailableActionException.class, containsString("index [unavailable-index-1] has no active shard copy"), - () -> run(syncEsqlQueryRequest().query("FROM unavailable-index-1,available-index-1")) + () -> run(syncEsqlQueryRequest("FROM unavailable-index-1,available-index-1")) ); expectThrows( NoShardAvailableActionException.class, containsString("index [unavailable-index-1] has no active shard copy"), - () -> run(syncEsqlQueryRequest().query("FROM *-index-1")) + () -> run(syncEsqlQueryRequest("FROM *-index-1")) ); expectThrows( NoShardAvailableActionException.class, containsString("index [unavailable-index-1] has no active shard copy"), - () -> run(syncEsqlQueryRequest().query("FROM unavailable-index-1").allowPartialResults(true)) + () -> run(syncEsqlQueryRequest("FROM unavailable-index-1").allowPartialResults(true)) ); } @@ -235,28 +235,28 @@ public void testPartialResolution() { expectThrows( IndexNotFoundException.class, equalTo("no such index [nonexisting-1]"), // fails when present index is non-empty - () -> run(syncEsqlQueryRequest().query("FROM index-1,nonexisting-1")) + () -> run(syncEsqlQueryRequest("FROM index-1,nonexisting-1")) ); expectThrows( IndexNotFoundException.class, equalTo("no such index [nonexisting-1]"), // fails when present index is non-empty even if allow_partial=true - () -> run(syncEsqlQueryRequest().query("FROM index-1,nonexisting-1").allowPartialResults(true)) + () -> run(syncEsqlQueryRequest("FROM index-1,nonexisting-1").allowPartialResults(true)) ); expectThrows( IndexNotFoundException.class, equalTo("no such index [nonexisting-1]"), // only the first missing index is reported - () -> run(syncEsqlQueryRequest().query("FROM index-1,nonexisting-1,nonexisting-2")) + () -> run(syncEsqlQueryRequest("FROM index-1,nonexisting-1,nonexisting-2")) ); assertAcked(client().admin().indices().prepareCreate("index-2").setMapping("field", "type=keyword")); expectThrows( IndexNotFoundException.class, equalTo("no such index [nonexisting-1]"), // fails when present index has no documents and non-empty mapping - () -> run(syncEsqlQueryRequest().query("FROM index-2,nonexisting-1")) + () -> run(syncEsqlQueryRequest("FROM index-2,nonexisting-1")) ); assertAcked(client().admin().indices().prepareCreate("index-3")); - try (var response = run(syncEsqlQueryRequest().query("FROM index-3,nonexisting-1"))) { + try (var response = run(syncEsqlQueryRequest("FROM index-3,nonexisting-1"))) { assertOk(response); // passes when the present index has no fields and no documents } } @@ -265,11 +265,11 @@ public void testResolutionWithFilter() { assertAcked(client().admin().indices().prepareCreate("data")); indexRandom(true, "data", 1); - try (var response = run(syncEsqlQueryRequest().query("FROM data METADATA _index").filter(new MatchAllQueryBuilder()))) { + try (var response = run(syncEsqlQueryRequest("FROM data METADATA _index").filter(new MatchAllQueryBuilder()))) { assertOk(response); assertResultConcreteIndices(response, "data"); } - try (var response = run(syncEsqlQueryRequest().query("FROM data METADATA _index").filter(new MatchNoneQueryBuilder()))) { + try (var response = run(syncEsqlQueryRequest("FROM data METADATA _index").filter(new MatchNoneQueryBuilder()))) { assertOk(response); assertResultConcreteIndices(response); } @@ -283,7 +283,7 @@ public void testSubqueryResolution() { assertAcked(client().admin().indices().prepareCreate("index-2")); indexRandom(true, "index-2", 1); - try (var response = run(syncEsqlQueryRequest().query("FROM (FROM index-1 METADATA _index), (FROM index-2 METADATA _index)"))) { + try (var response = run(syncEsqlQueryRequest("FROM (FROM index-1 METADATA _index), (FROM index-2 METADATA _index)"))) { assertOk(response); assertResultConcreteIndices(response, "index-1", "index-2"); } diff --git a/x-pack/plugin/esql/src/internalClusterTest/java/org/elasticsearch/xpack/esql/plugin/LookupIndexResolutionIT.java b/x-pack/plugin/esql/src/internalClusterTest/java/org/elasticsearch/xpack/esql/plugin/LookupIndexResolutionIT.java index 2d348f08a4fcc..339f2abdda3e6 100644 --- a/x-pack/plugin/esql/src/internalClusterTest/java/org/elasticsearch/xpack/esql/plugin/LookupIndexResolutionIT.java +++ b/x-pack/plugin/esql/src/internalClusterTest/java/org/elasticsearch/xpack/esql/plugin/LookupIndexResolutionIT.java @@ -28,7 +28,7 @@ public void testResolvesConcreteIndex() { createMainIndex("index-1"); createLookupIndex("lookup"); - try (var response = run(syncEsqlQueryRequest().query("FROM index-1 | LOOKUP JOIN lookup ON language_code"))) { + try (var response = run(syncEsqlQueryRequest("FROM index-1 | LOOKUP JOIN lookup ON language_code"))) { assertOk(response); } } @@ -40,7 +40,7 @@ public void testResolvesAlias() { client().admin().indices().prepareAliases(TEST_REQUEST_TIMEOUT, TEST_REQUEST_TIMEOUT).addAlias("lookup", "lookup-alias") ); - try (var response = run(syncEsqlQueryRequest().query("FROM index-1 | LOOKUP JOIN lookup-alias ON language_code"))) { + try (var response = run(syncEsqlQueryRequest("FROM index-1 | LOOKUP JOIN lookup-alias ON language_code"))) { assertOk(response); } } @@ -51,7 +51,7 @@ public void testDoesNotResolveMissingIndex() { expectThrows( VerificationException.class, containsString("Unknown index [fake-lookup]"), - () -> run(syncEsqlQueryRequest().query("FROM index-1 | LOOKUP JOIN fake-lookup ON language_code")) + () -> run(syncEsqlQueryRequest("FROM index-1 | LOOKUP JOIN fake-lookup ON language_code")) ); } diff --git a/x-pack/plugin/esql/src/internalClusterTest/java/org/elasticsearch/xpack/esql/plugin/MatchOperatorIT.java b/x-pack/plugin/esql/src/internalClusterTest/java/org/elasticsearch/xpack/esql/plugin/MatchOperatorIT.java index efad0f92ae967..79abf086eee97 100644 --- a/x-pack/plugin/esql/src/internalClusterTest/java/org/elasticsearch/xpack/esql/plugin/MatchOperatorIT.java +++ b/x-pack/plugin/esql/src/internalClusterTest/java/org/elasticsearch/xpack/esql/plugin/MatchOperatorIT.java @@ -134,7 +134,7 @@ public void testWhereMatchWithScoring_AndRequestFilter() { QueryBuilder filter = boolQuery().must(matchQuery("content", "brown")); - try (var resp = run(syncEsqlQueryRequest().query(query).pragmas(randomPragmas()).filter(filter))) { + try (var resp = run(syncEsqlQueryRequest(query).pragmas(randomPragmas()).filter(filter))) { assertColumnNames(resp.columns(), List.of("content", "_score")); assertColumnTypes(resp.columns(), List.of("text", "double")); assertValues( @@ -157,7 +157,7 @@ public void testWhereMatchWithScoring_AndNoScoreRequestFilter() { QueryBuilder filter = boolQuery().filter(matchQuery("content", "brown")); - try (var resp = run(syncEsqlQueryRequest().query(query).pragmas(randomPragmas()).filter(filter))) { + try (var resp = run(syncEsqlQueryRequest(query).pragmas(randomPragmas()).filter(filter))) { assertColumnNames(resp.columns(), List.of("content", "_score")); assertColumnTypes(resp.columns(), List.of("text", "double")); assertValues( @@ -180,7 +180,7 @@ public void testWhereMatchWithScoring_And_MatchAllRequestFilter() { QueryBuilder filter = QueryBuilders.matchAllQuery(); - try (var resp = run(syncEsqlQueryRequest().query(query).pragmas(randomPragmas()).filter(filter))) { + try (var resp = run(syncEsqlQueryRequest(query).pragmas(randomPragmas()).filter(filter))) { assertColumnNames(resp.columns(), List.of("content", "_score")); assertColumnTypes(resp.columns(), List.of("text", "double")); assertValues( @@ -202,7 +202,7 @@ public void testScoringOutsideQuery() { QueryBuilder filter = boolQuery().must(matchQuery("content", "fox")); - try (var resp = run(syncEsqlQueryRequest().query(query).pragmas(randomPragmas()).filter(filter))) { + try (var resp = run(syncEsqlQueryRequest(query).pragmas(randomPragmas()).filter(filter))) { assertColumnNames(resp.columns(), List.of("content", "_score")); assertColumnTypes(resp.columns(), List.of("text", "double")); assertValues( @@ -224,7 +224,7 @@ public void testScoring_Zero_OutsideQuery() { QueryBuilder filter = boolQuery().filter(matchQuery("content", "fox")); - try (var resp = run(syncEsqlQueryRequest().query(query).pragmas(randomPragmas()).filter(filter))) { + try (var resp = run(syncEsqlQueryRequest(query).pragmas(randomPragmas()).filter(filter))) { assertColumnNames(resp.columns(), List.of("content", "_score")); assertColumnTypes(resp.columns(), List.of("text", "double")); assertValues( diff --git a/x-pack/plugin/esql/src/internalClusterTest/java/org/elasticsearch/xpack/esql/plugin/RemoteIndexResolutionIT.java b/x-pack/plugin/esql/src/internalClusterTest/java/org/elasticsearch/xpack/esql/plugin/RemoteIndexResolutionIT.java index 085f58d6c09b2..42d7a322c6550 100644 --- a/x-pack/plugin/esql/src/internalClusterTest/java/org/elasticsearch/xpack/esql/plugin/RemoteIndexResolutionIT.java +++ b/x-pack/plugin/esql/src/internalClusterTest/java/org/elasticsearch/xpack/esql/plugin/RemoteIndexResolutionIT.java @@ -32,11 +32,7 @@ public class RemoteIndexResolutionIT extends AbstractCrossClusterTestCase { public void testResolvesRemoteIndex() { indexRandom(REMOTE_CLUSTER_1, true, "index-1", 1); - try ( - var response = run( - syncEsqlQueryRequest().query("FROM " + REMOTE_CLUSTER_1 + ":index-1 METADATA _index").includeCCSMetadata(true) - ) - ) { + try (var response = run(syncEsqlQueryRequest("FROM " + REMOTE_CLUSTER_1 + ":index-1 METADATA _index").includeCCSMetadata(true))) { assertOk(response); assertResultConcreteIndices(response, REMOTE_CLUSTER_1 + ":index-1"); assertExecutionInfo(response, new EsqlResponseExecutionInfo(REMOTE_CLUSTER_1, "index-1", Status.SUCCESSFUL)); @@ -51,27 +47,23 @@ public void testResolveRemoteUnknownIndex() { expectThrows( VerificationException.class, containsString("Unknown index [" + REMOTE_CLUSTER_1 + ":fake]"), - () -> run(syncEsqlQueryRequest().query("FROM data," + REMOTE_CLUSTER_1 + ":fake")) + () -> run(syncEsqlQueryRequest("FROM data," + REMOTE_CLUSTER_1 + ":fake")) ); expectThrows( VerificationException.class, containsString("Unknown index [" + REMOTE_CLUSTER_1 + ":fake]"), - () -> run(syncEsqlQueryRequest().query("FROM data," + REMOTE_CLUSTER_1 + ":fake").allowPartialResults(true)) + () -> run(syncEsqlQueryRequest("FROM data," + REMOTE_CLUSTER_1 + ":fake").allowPartialResults(true)) ); setSkipUnavailable(REMOTE_CLUSTER_1, false); expectThrows( VerificationException.class, containsString("Unknown index [" + REMOTE_CLUSTER_1 + ":fake]"), - () -> run(syncEsqlQueryRequest().query("FROM data," + REMOTE_CLUSTER_1 + ":fake")) + () -> run(syncEsqlQueryRequest("FROM data," + REMOTE_CLUSTER_1 + ":fake")) ); setSkipUnavailable(REMOTE_CLUSTER_1, true); - try ( - var response = run( - syncEsqlQueryRequest().query("FROM data," + REMOTE_CLUSTER_1 + ":fake METADATA _index").includeCCSMetadata(true) - ) - ) { + try (var response = run(syncEsqlQueryRequest("FROM data," + REMOTE_CLUSTER_1 + ":fake METADATA _index").includeCCSMetadata(true))) { assertPartial(response); assertResultConcreteIndices(response, "data"); assertExecutionInfo( @@ -82,11 +74,7 @@ public void testResolveRemoteUnknownIndex() { } setSkipUnavailable(REMOTE_CLUSTER_1, null); - try ( - var response = run( - syncEsqlQueryRequest().query("FROM data," + REMOTE_CLUSTER_1 + ":fake METADATA _index").includeCCSMetadata(true) - ) - ) { + try (var response = run(syncEsqlQueryRequest("FROM data," + REMOTE_CLUSTER_1 + ":fake METADATA _index").includeCCSMetadata(true))) { assertPartial(response); assertResultConcreteIndices(response, "data"); assertExecutionInfo( @@ -103,7 +91,7 @@ public void testResolvesLocalAndRemoteIndex() { try ( var response = run( - syncEsqlQueryRequest().query("FROM index-1," + REMOTE_CLUSTER_1 + ":index-1 METADATA _index").includeCCSMetadata(true) + syncEsqlQueryRequest("FROM index-1," + REMOTE_CLUSTER_1 + ":index-1 METADATA _index").includeCCSMetadata(true) ) ) { assertOk(response); @@ -121,7 +109,7 @@ public void testResolvesRemotesWithPattern() { indexRandom(REMOTE_CLUSTER_1, true, "index-1", 1); indexRandom(REMOTE_CLUSTER_2, true, "index-1", 1); - try (var response = run(syncEsqlQueryRequest().query("FROM *:index-1 METADATA _index").includeCCSMetadata(true))) { + try (var response = run(syncEsqlQueryRequest("FROM *:index-1 METADATA _index").includeCCSMetadata(true))) { assertOk(response); assertResultConcreteIndices(response, REMOTE_CLUSTER_1 + ":index-1", REMOTE_CLUSTER_2 + ":index-1"); // local is not included assertExecutionInfo( @@ -130,7 +118,7 @@ public void testResolvesRemotesWithPattern() { new EsqlResponseExecutionInfo(REMOTE_CLUSTER_2, "index-1", Status.SUCCESSFUL) ); } - try (var response = run(syncEsqlQueryRequest().query("FROM fake*:index-1 METADATA _index").includeCCSMetadata(true))) { + try (var response = run(syncEsqlQueryRequest("FROM fake*:index-1 METADATA _index").includeCCSMetadata(true))) { assertOk(response); assertResultConcreteIndices(response); // empty assertExecutionInfo(response); // empty @@ -141,7 +129,7 @@ public void testDoesNotResolvesUnknownRemote() { expectThrows( NoSuchRemoteClusterException.class, containsString("no such remote cluster: [fake]"), - () -> run(syncEsqlQueryRequest().query("FROM fake:index-1 METADATA _index")) + () -> run(syncEsqlQueryRequest("FROM fake:index-1 METADATA _index")) ); } @@ -150,7 +138,7 @@ public void testResolutionWithFilter() { try ( var response = run( - syncEsqlQueryRequest().query("FROM " + REMOTE_CLUSTER_1 + ":index-1 METADATA _index").filter(new MatchAllQueryBuilder()) + syncEsqlQueryRequest("FROM " + REMOTE_CLUSTER_1 + ":index-1 METADATA _index").filter(new MatchAllQueryBuilder()) ) ) { assertOk(response); @@ -159,7 +147,7 @@ public void testResolutionWithFilter() { } try ( var response = run( - syncEsqlQueryRequest().query("FROM " + REMOTE_CLUSTER_1 + ":index-1 METADATA _index").filter(new MatchNoneQueryBuilder()) + syncEsqlQueryRequest("FROM " + REMOTE_CLUSTER_1 + ":index-1 METADATA _index").filter(new MatchNoneQueryBuilder()) ) ) { assertOk(response); diff --git a/x-pack/plugin/esql/src/internalClusterTest/java/org/elasticsearch/xpack/esql/spatial/SpatialPushDownShapeTestCase.java b/x-pack/plugin/esql/src/internalClusterTest/java/org/elasticsearch/xpack/esql/spatial/SpatialPushDownShapeTestCase.java index 4ed5a890b4da6..8dacdda58b921 100644 --- a/x-pack/plugin/esql/src/internalClusterTest/java/org/elasticsearch/xpack/esql/spatial/SpatialPushDownShapeTestCase.java +++ b/x-pack/plugin/esql/src/internalClusterTest/java/org/elasticsearch/xpack/esql/spatial/SpatialPushDownShapeTestCase.java @@ -7,14 +7,15 @@ package org.elasticsearch.xpack.esql.spatial; -import org.elasticsearch.xpack.core.esql.action.EsqlQueryRequestBuilder; import org.elasticsearch.xpack.core.esql.action.EsqlQueryResponse; +import org.elasticsearch.xpack.esql.action.EsqlQueryAction; import java.util.ArrayList; import java.util.Arrays; import java.util.Iterator; import java.util.Locale; +import static org.elasticsearch.xpack.esql.action.EsqlQueryRequest.syncEsqlQueryRequest; import static org.hamcrest.Matchers.greaterThanOrEqualTo; public abstract class SpatialPushDownShapeTestCase extends SpatialPushDownTestCase { @@ -143,8 +144,8 @@ protected void assertFunction(String spatialFunction, String wkt, long expected) FROM not-indexed | WHERE %s(location, %s("%s")) | STATS COUNT(*) """, spatialFunction, castingFunction(), wkt); try ( - EsqlQueryResponse response1 = EsqlQueryRequestBuilder.newRequestBuilder(client()).query(query1).get(); - EsqlQueryResponse response2 = EsqlQueryRequestBuilder.newRequestBuilder(client()).query(query2).get(); + EsqlQueryResponse response1 = client().execute(EsqlQueryAction.INSTANCE, syncEsqlQueryRequest(query1)).actionGet(); + EsqlQueryResponse response2 = client().execute(EsqlQueryAction.INSTANCE, syncEsqlQueryRequest(query2)).actionGet(); ) { Object indexedResult = response1.response().column(0).iterator().next(); Object notIndexedResult = response2.response().column(0).iterator().next(); @@ -159,8 +160,8 @@ private void assertFunction(int id, String expected, String spatialFunction, Str final String query1 = "FROM indexed METADATA _id | " + predicate + " | KEEP _id, location"; final String query2 = "FROM not-indexed METADATA _id | " + predicate + " | KEEP _id, location"; try ( - EsqlQueryResponse response1 = EsqlQueryRequestBuilder.newRequestBuilder(client()).query(query1).get(); - EsqlQueryResponse response2 = EsqlQueryRequestBuilder.newRequestBuilder(client()).query(query2).get(); + EsqlQueryResponse response1 = client().execute(EsqlQueryAction.INSTANCE, syncEsqlQueryRequest(query1)).actionGet(); + EsqlQueryResponse response2 = client().execute(EsqlQueryAction.INSTANCE, syncEsqlQueryRequest(query2)).actionGet(); ) { record Result(int id, String location) { Result(Iterator iterator) { diff --git a/x-pack/plugin/esql/src/internalClusterTest/java/org/elasticsearch/xpack/esql/spatial/SpatialPushDownTestCase.java b/x-pack/plugin/esql/src/internalClusterTest/java/org/elasticsearch/xpack/esql/spatial/SpatialPushDownTestCase.java index 90e8bb713552e..e1bc31bc90237 100644 --- a/x-pack/plugin/esql/src/internalClusterTest/java/org/elasticsearch/xpack/esql/spatial/SpatialPushDownTestCase.java +++ b/x-pack/plugin/esql/src/internalClusterTest/java/org/elasticsearch/xpack/esql/spatial/SpatialPushDownTestCase.java @@ -13,8 +13,8 @@ import org.elasticsearch.geometry.utils.WellKnownText; import org.elasticsearch.plugins.Plugin; import org.elasticsearch.test.ESIntegTestCase; -import org.elasticsearch.xpack.core.esql.action.EsqlQueryRequestBuilder; import org.elasticsearch.xpack.core.esql.action.EsqlQueryResponse; +import org.elasticsearch.xpack.esql.action.EsqlQueryAction; import org.elasticsearch.xpack.esql.plugin.EsqlPlugin; import org.elasticsearch.xpack.spatial.SpatialPlugin; @@ -25,6 +25,7 @@ import java.util.Locale; import static org.elasticsearch.test.hamcrest.ElasticsearchAssertions.assertAcked; +import static org.elasticsearch.xpack.esql.action.EsqlQueryRequest.syncEsqlQueryRequest; /** * Base class to check that a query than can be pushed down gives the same result @@ -173,7 +174,7 @@ protected static class TestQueryResponseCollection implements AutoCloseable { public TestQueryResponseCollection(List queries) { this.responses = queries.stream().map(query -> { try { - return EsqlQueryRequestBuilder.newRequestBuilder(client()).query(query).get(); + return client().execute(EsqlQueryAction.INSTANCE, syncEsqlQueryRequest(query)).get(); } catch (Exception e) { throw new RuntimeException(e); } diff --git a/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/action/EsqlQueryRequest.java b/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/action/EsqlQueryRequest.java index 8b71536bcf7f9..abe36554d3d13 100644 --- a/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/action/EsqlQueryRequest.java +++ b/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/action/EsqlQueryRequest.java @@ -65,16 +65,17 @@ public class EsqlQueryRequest extends org.elasticsearch.xpack.core.esql.action.E */ private final Map> tables = new TreeMap<>(); - public static EsqlQueryRequest syncEsqlQueryRequest() { - return new EsqlQueryRequest(false); + public static EsqlQueryRequest syncEsqlQueryRequest(String query) { + return new EsqlQueryRequest(false, query); } - public static EsqlQueryRequest asyncEsqlQueryRequest() { - return new EsqlQueryRequest(true); + public static EsqlQueryRequest asyncEsqlQueryRequest(String query) { + return new EsqlQueryRequest(true, query); } - private EsqlQueryRequest(boolean async) { + private EsqlQueryRequest(boolean async, String query) { this.async = async; + this.query = query; } public EsqlQueryRequest(StreamInput in) throws IOException { @@ -127,8 +128,9 @@ public boolean async() { return async; } - public void columnar(boolean columnar) { + public EsqlQueryRequest columnar(boolean columnar) { this.columnar = columnar; + return this; } public boolean columnar() { @@ -139,8 +141,9 @@ public boolean columnar() { * Enable profiling, sacrificing performance to return information about * what operations are taking the most time. */ - public void profile(boolean profile) { + public EsqlQueryRequest profile(boolean profile) { this.profile = profile; + return this; } public EsqlQueryRequest includeCCSMetadata(Boolean include) { @@ -215,24 +218,27 @@ public TimeValue waitForCompletionTimeout() { return waitForCompletionTimeout; } - public void waitForCompletionTimeout(TimeValue waitForCompletionTimeout) { + public EsqlQueryRequest waitForCompletionTimeout(TimeValue waitForCompletionTimeout) { this.waitForCompletionTimeout = waitForCompletionTimeout; + return this; } public TimeValue keepAlive() { return keepAlive; } - public void keepAlive(TimeValue keepAlive) { + public EsqlQueryRequest keepAlive(TimeValue keepAlive) { this.keepAlive = keepAlive; + return this; } public boolean keepOnCompletion() { return keepOnCompletion; } - public void keepOnCompletion(boolean keepOnCompletion) { + public EsqlQueryRequest keepOnCompletion(boolean keepOnCompletion) { this.keepOnCompletion = keepOnCompletion; + return this; } /** diff --git a/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/action/EsqlQueryRequestBuilder.java b/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/action/EsqlQueryRequestBuilder.java deleted file mode 100644 index 552e925f70e97..0000000000000 --- a/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/action/EsqlQueryRequestBuilder.java +++ /dev/null @@ -1,84 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -package org.elasticsearch.xpack.esql.action; - -import org.elasticsearch.client.internal.ElasticsearchClient; -import org.elasticsearch.core.TimeValue; -import org.elasticsearch.index.query.QueryBuilder; -import org.elasticsearch.xpack.core.esql.action.internal.SharedSecrets; -import org.elasticsearch.xpack.esql.plugin.QueryPragmas; - -public class EsqlQueryRequestBuilder extends org.elasticsearch.xpack.core.esql.action.EsqlQueryRequestBuilder< - EsqlQueryRequest, - EsqlQueryResponse> { - - public static EsqlQueryRequestBuilder newAsyncEsqlQueryRequestBuilder(ElasticsearchClient client) { - return new EsqlQueryRequestBuilder(client, EsqlQueryRequest.asyncEsqlQueryRequest()); - } - - public static EsqlQueryRequestBuilder newSyncEsqlQueryRequestBuilder(ElasticsearchClient client) { - return new EsqlQueryRequestBuilder(client, EsqlQueryRequest.syncEsqlQueryRequest()); - } - - private EsqlQueryRequestBuilder(ElasticsearchClient client, EsqlQueryRequest request) { - super(client, EsqlQueryAction.INSTANCE, request); - } - - @Override - public EsqlQueryRequestBuilder query(String query) { - request.query(query); - return this; - } - - public EsqlQueryRequestBuilder columnar(boolean columnar) { - request.columnar(columnar); - return this; - } - - @Override - public EsqlQueryRequestBuilder filter(QueryBuilder filter) { - request.filter(filter); - return this; - } - - public EsqlQueryRequestBuilder pragmas(QueryPragmas pragmas) { - request.pragmas(pragmas); - return this; - } - - public EsqlQueryRequestBuilder waitForCompletionTimeout(TimeValue waitForCompletionTimeout) { - request.waitForCompletionTimeout(waitForCompletionTimeout); - return this; - } - - public EsqlQueryRequestBuilder keepAlive(TimeValue keepAlive) { - request.keepAlive(keepAlive); - return this; - } - - public EsqlQueryRequestBuilder keepOnCompletion(boolean keepOnCompletion) { - request.keepOnCompletion(keepOnCompletion); - return this; - } - - @Override - public EsqlQueryRequestBuilder allowPartialResults(boolean allowPartialResults) { - request.allowPartialResults(allowPartialResults); - return this; - } - - @Override - public org.elasticsearch.xpack.core.esql.action.EsqlQueryRequestBuilder profile(boolean profile) { - request.profile(profile); - return this; - } - - static { // plumb access from x-pack core - SharedSecrets.setEsqlQueryRequestBuilderAccess(EsqlQueryRequestBuilder::newSyncEsqlQueryRequestBuilder); - } -} diff --git a/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/action/RequestXContent.java b/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/action/RequestXContent.java index 894e8f5d9e23e..f5b6e4da75fbe 100644 --- a/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/action/RequestXContent.java +++ b/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/action/RequestXContent.java @@ -34,6 +34,8 @@ import static org.elasticsearch.common.logging.LoggerMessageFormat.format; import static org.elasticsearch.xcontent.ObjectParser.ValueType.VALUE_OBJECT_ARRAY; +import static org.elasticsearch.xpack.esql.action.EsqlQueryRequest.asyncEsqlQueryRequest; +import static org.elasticsearch.xpack.esql.action.EsqlQueryRequest.syncEsqlQueryRequest; import static org.elasticsearch.xpack.esql.core.type.DataType.KEYWORD; import static org.elasticsearch.xpack.esql.core.util.StringUtils.WILDCARD; import static org.elasticsearch.xpack.esql.core.util.StringUtils.isValidParamName; @@ -89,8 +91,8 @@ String fields() { static final ParseField KEEP_ALIVE = new ParseField("keep_alive"); static final ParseField KEEP_ON_COMPLETION = new ParseField("keep_on_completion"); - private static final ObjectParser SYNC_PARSER = objectParserSync(EsqlQueryRequest::syncEsqlQueryRequest); - private static final ObjectParser ASYNC_PARSER = objectParserAsync(EsqlQueryRequest::asyncEsqlQueryRequest); + private static final ObjectParser SYNC_PARSER = objectParserSync(() -> syncEsqlQueryRequest(null)); + private static final ObjectParser ASYNC_PARSER = objectParserAsync(() -> asyncEsqlQueryRequest(null)); /** Parses a synchronous request. */ static EsqlQueryRequest parseSync(XContentParser parser) { diff --git a/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/plugin/EsqlPlugin.java b/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/plugin/EsqlPlugin.java index 7f98ba0e1ed98..c1ad3a15730de 100644 --- a/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/plugin/EsqlPlugin.java +++ b/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/plugin/EsqlPlugin.java @@ -58,7 +58,6 @@ import org.elasticsearch.xpack.esql.action.EsqlGetQueryAction; import org.elasticsearch.xpack.esql.action.EsqlListQueriesAction; import org.elasticsearch.xpack.esql.action.EsqlQueryAction; -import org.elasticsearch.xpack.esql.action.EsqlQueryRequestBuilder; import org.elasticsearch.xpack.esql.action.EsqlResolveFieldsAction; import org.elasticsearch.xpack.esql.action.EsqlSearchShardsAction; import org.elasticsearch.xpack.esql.action.RestEsqlAsyncQueryAction; @@ -83,7 +82,6 @@ import org.elasticsearch.xpack.esql.querylog.EsqlQueryLog; import org.elasticsearch.xpack.esql.session.IndexResolver; -import java.lang.invoke.MethodHandles; import java.util.ArrayList; import java.util.Collection; import java.util.List; @@ -182,7 +180,6 @@ public Collection createComponents(PluginServices services) { ); BigArrays bigArrays = services.indicesService().getBigArrays().withCircuitBreaking(); var blockFactoryProvider = blockFactoryProvider(circuitBreaker, bigArrays, maxPrimitiveArrayBlockSize); - setupSharedSecrets(); List> extraCheckers = extraCheckerProviders.stream() .flatMap(p -> p.checkers(services.projectResolver(), services.clusterService()).stream()) .toList(); @@ -209,15 +206,6 @@ protected BlockFactoryProvider blockFactoryProvider(CircuitBreaker breaker, BigA return new BlockFactoryProvider(new BlockFactory(breaker, bigArrays, maxPrimitiveArraySize)); } - private void setupSharedSecrets() { - try { - // EsqlQueryRequestBuilder. initializes the shared secret access - MethodHandles.lookup().ensureInitialized(EsqlQueryRequestBuilder.class); - } catch (IllegalAccessException e) { - throw new AssertionError(e); - } - } - // to be overriden by tests protected XPackLicenseState getLicenseState() { return XPackPlugin.getSharedLicenseState();