From 1465b2fa55a3a59c7f2747bf5ed6295752346a28 Mon Sep 17 00:00:00 2001 From: Benjamin Trent <4357155+benwtrent@users.noreply.github.com> Date: Wed, 30 Sep 2020 14:02:36 -0400 Subject: [PATCH 1/9] [Transform] add new for_export flag to GET transform --- .../client/TransformRequestConverters.java | 4 +++ .../client/transform/GetTransformRequest.java | 13 ++++++- .../TransformDocumentationIT.java | 1 + .../transform/get_transform.asciidoc | 3 ++ .../transform/apis/get-transform.asciidoc | 18 ++++++---- .../xpack/core/transform/TransformField.java | 1 + .../transform/transforms/TransformConfig.java | 36 ++++++++++--------- ...me_transform_deprecated.get_transform.json | 6 ++++ .../api/transform.get_transform.json | 6 ++++ .../test/transform/transforms_crud.yml | 31 ++++++++++++++++ .../integration/TransformPivotRestIT.java | 31 ++++++++++++++++ .../rest/action/RestGetTransformAction.java | 8 +++++ .../RestGetTransformActionDeprecated.java | 7 ++++ 13 files changed, 141 insertions(+), 24 deletions(-) diff --git a/client/rest-high-level/src/main/java/org/elasticsearch/client/TransformRequestConverters.java b/client/rest-high-level/src/main/java/org/elasticsearch/client/TransformRequestConverters.java index 4815353936b28..df04df2972732 100644 --- a/client/rest-high-level/src/main/java/org/elasticsearch/client/TransformRequestConverters.java +++ b/client/rest-high-level/src/main/java/org/elasticsearch/client/TransformRequestConverters.java @@ -40,6 +40,7 @@ import static org.elasticsearch.client.RequestConverters.createEntity; import static org.elasticsearch.client.transform.DeleteTransformRequest.FORCE; import static org.elasticsearch.client.transform.GetTransformRequest.ALLOW_NO_MATCH; +import static org.elasticsearch.client.transform.GetTransformRequest.FOR_EXPORT; import static org.elasticsearch.client.transform.PutTransformRequest.DEFER_VALIDATION; import static org.elasticsearch.client.transform.StopTransformRequest.WAIT_FOR_CHECKPOINT; @@ -89,6 +90,9 @@ static Request getTransform(GetTransformRequest getRequest) { if (getRequest.getAllowNoMatch() != null) { request.addParameter(ALLOW_NO_MATCH, getRequest.getAllowNoMatch().toString()); } + if (getRequest.getForExport() != null) { + request.addParameter(FOR_EXPORT, getRequest.getForExport().toString()); + } return request; } diff --git a/client/rest-high-level/src/main/java/org/elasticsearch/client/transform/GetTransformRequest.java b/client/rest-high-level/src/main/java/org/elasticsearch/client/transform/GetTransformRequest.java index f0238083f6af0..d22eaf0217e8b 100644 --- a/client/rest-high-level/src/main/java/org/elasticsearch/client/transform/GetTransformRequest.java +++ b/client/rest-high-level/src/main/java/org/elasticsearch/client/transform/GetTransformRequest.java @@ -30,6 +30,7 @@ public class GetTransformRequest implements Validatable { + public static final String FOR_EXPORT = "for_export"; public static final String ALLOW_NO_MATCH = "allow_no_match"; /** * Helper method to create a request that will get ALL Transforms @@ -42,6 +43,7 @@ public static GetTransformRequest getAllTransformRequest() { private final List ids; private PageParams pageParams; private Boolean allowNoMatch; + private Boolean forExport; public GetTransformRequest(String... ids) { this.ids = Arrays.asList(ids); @@ -67,6 +69,14 @@ public void setAllowNoMatch(Boolean allowNoMatch) { this.allowNoMatch = allowNoMatch; } + public void setForExport(boolean forExport) { + this.forExport = forExport; + } + + public Boolean getForExport() { + return forExport; + } + @Override public Optional validate() { if (ids == null || ids.isEmpty()) { @@ -80,7 +90,7 @@ public Optional validate() { @Override public int hashCode() { - return Objects.hash(ids, pageParams, allowNoMatch); + return Objects.hash(ids, pageParams, forExport, allowNoMatch); } @Override @@ -95,6 +105,7 @@ public boolean equals(Object obj) { GetTransformRequest other = (GetTransformRequest) obj; return Objects.equals(ids, other.ids) && Objects.equals(pageParams, other.pageParams) + && Objects.equals(forExport, other.forExport) && Objects.equals(allowNoMatch, other.allowNoMatch); } } diff --git a/client/rest-high-level/src/test/java/org/elasticsearch/client/documentation/TransformDocumentationIT.java b/client/rest-high-level/src/test/java/org/elasticsearch/client/documentation/TransformDocumentationIT.java index c9c7d9d806b3f..646da9c7b8a7c 100644 --- a/client/rest-high-level/src/test/java/org/elasticsearch/client/documentation/TransformDocumentationIT.java +++ b/client/rest-high-level/src/test/java/org/elasticsearch/client/documentation/TransformDocumentationIT.java @@ -687,6 +687,7 @@ public void testGetDataFrameTransform() throws IOException, InterruptedException // tag::get-transform-request-options request.setPageParams(new PageParams(0, 100)); // <1> request.setAllowNoMatch(true); // <2> + request.setForExport(false); // <3> // end::get-transform-request-options // tag::get-transform-execute diff --git a/docs/java-rest/high-level/transform/get_transform.asciidoc b/docs/java-rest/high-level/transform/get_transform.asciidoc index 64aa0f229c427..ca79ebf17e1ba 100644 --- a/docs/java-rest/high-level/transform/get_transform.asciidoc +++ b/docs/java-rest/high-level/transform/get_transform.asciidoc @@ -34,6 +34,9 @@ include-tagged::{doc-tests-file}[{api}-request-options] {transforms} to skip. `size` specifies the maximum number of {transforms} to get. Defaults to `0` and `100` respectively. <2> Whether to ignore if a wildcard expression matches no {transforms}. +<3> Optional boolean value for requesting the {transform} in a format that can +then be put into another cluster. Certain fields that can only be set when +the {transform} is created are removed. include::../execution.asciidoc[] diff --git a/docs/reference/transform/apis/get-transform.asciidoc b/docs/reference/transform/apis/get-transform.asciidoc index 939bc59413d4a..b6c293e359283 100644 --- a/docs/reference/transform/apis/get-transform.asciidoc +++ b/docs/reference/transform/apis/get-transform.asciidoc @@ -26,12 +26,12 @@ Retrieves configuration information for {transforms}. [[get-transform-prereqs]] == {api-prereq-title} -If the {es} {security-features} are enabled, you must have the following +If the {es} {security-features} are enabled, you must have the following privileges: -* `monitor_transform` +* `monitor_transform` -The built-in `transform_user` role has this privilege. +The built-in `transform_user` role has this privilege. For more information, see <> and <>. @@ -49,7 +49,7 @@ specifying `*` as the ``, or by omitting the ``. ``:: (Optional, string) include::{es-repo-dir}/rest-api/common-parms.asciidoc[tag=transform-id-wildcard] - + [[get-transform-query-parms]] == {api-query-parms-title} @@ -65,6 +65,12 @@ include::{es-repo-dir}/rest-api/common-parms.asciidoc[tag=from-transforms] (Optional, integer) include::{es-repo-dir}/rest-api/common-parms.asciidoc[tag=size-transforms] +`for_export`:: +(Optional, boolean) +Indicates if certain fields should be removed from the configuration on +retrieval. This allows the configuration to be in an acceptable format to be retrieved +and then added to another cluster. Default is false. + [[get-transform-response]] == {api-response-body-title} @@ -79,13 +85,13 @@ This property is informational; you cannot change its value. `version`:: (string) The version of {es} that existed on the node when the {transform} was created. - + [[get-transform-response-codes]] == {api-response-codes-title} `404` (Missing resources):: If `allow_no_match` is `false`, this code indicates that there are no - resources that match the request or only partial matches for the request. + resources that match the request or only partial matches for the request. [[get-transform-example]] == {api-examples-title} diff --git a/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/transform/TransformField.java b/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/transform/TransformField.java index 46855b74ab210..5fa66d10e2297 100644 --- a/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/transform/TransformField.java +++ b/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/transform/TransformField.java @@ -84,6 +84,7 @@ public final class TransformField { * API's) */ public static final String FOR_INTERNAL_STORAGE = "for_internal_storage"; + public static final String FOR_EXPORT = "for_export"; // internal document id public static String DOCUMENT_ID_FIELD = "_id"; diff --git a/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/transform/transforms/TransformConfig.java b/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/transform/transforms/TransformConfig.java index 2f1995fd0afe0..0ba9c805b81bd 100644 --- a/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/transform/transforms/TransformConfig.java +++ b/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/transform/transforms/TransformConfig.java @@ -343,7 +343,25 @@ public void writeTo(final StreamOutput out) throws IOException { @Override public XContentBuilder toXContent(final XContentBuilder builder, final Params params) throws IOException { builder.startObject(); - builder.field(TransformField.ID.getPreferredName(), id); + if (params.paramAsBoolean(TransformField.FOR_EXPORT, false) == false) { + builder.field(TransformField.ID.getPreferredName(), id); + if (headers.isEmpty() == false && params.paramAsBoolean(TransformField.FOR_INTERNAL_STORAGE, false)) { + builder.field(HEADERS.getPreferredName(), headers); + } + if (transformVersion != null) { + builder.field(TransformField.VERSION.getPreferredName(), transformVersion); + } + if (createTime != null) { + builder.timeField( + TransformField.CREATE_TIME.getPreferredName(), + TransformField.CREATE_TIME.getPreferredName() + "_string", + createTime.toEpochMilli() + ); + } + if (params.paramAsBoolean(TransformField.FOR_INTERNAL_STORAGE, false)) { + builder.field(TransformField.INDEX_DOC_TYPE.getPreferredName(), NAME); + } + } builder.field(TransformField.SOURCE.getPreferredName(), source); builder.field(TransformField.DESTINATION.getPreferredName(), dest); if (frequency != null) { @@ -357,26 +375,10 @@ public XContentBuilder toXContent(final XContentBuilder builder, final Params pa if (pivotConfig != null) { builder.field(PIVOT_TRANSFORM.getPreferredName(), pivotConfig); } - if (params.paramAsBoolean(TransformField.FOR_INTERNAL_STORAGE, false)) { - builder.field(TransformField.INDEX_DOC_TYPE.getPreferredName(), NAME); - } - if (headers.isEmpty() == false && params.paramAsBoolean(TransformField.FOR_INTERNAL_STORAGE, false)) { - builder.field(HEADERS.getPreferredName(), headers); - } if (description != null) { builder.field(TransformField.DESCRIPTION.getPreferredName(), description); } builder.field(TransformField.SETTINGS.getPreferredName(), settings); - if (transformVersion != null) { - builder.field(TransformField.VERSION.getPreferredName(), transformVersion); - } - if (createTime != null) { - builder.timeField( - TransformField.CREATE_TIME.getPreferredName(), - TransformField.CREATE_TIME.getPreferredName() + "_string", - createTime.toEpochMilli() - ); - } builder.endObject(); return builder; } diff --git a/x-pack/plugin/src/test/resources/rest-api-spec/api/data_frame_transform_deprecated.get_transform.json b/x-pack/plugin/src/test/resources/rest-api-spec/api/data_frame_transform_deprecated.get_transform.json index 17f333861c5dc..ca68e63fa1346 100644 --- a/x-pack/plugin/src/test/resources/rest-api-spec/api/data_frame_transform_deprecated.get_transform.json +++ b/x-pack/plugin/src/test/resources/rest-api-spec/api/data_frame_transform_deprecated.get_transform.json @@ -50,6 +50,12 @@ "type":"boolean", "required":false, "description":"Whether to ignore if a wildcard expression matches no transforms. (This includes `_all` string or when no transforms have been specified)" + }, + "for_export": { + "required": false, + "type": "boolean", + "default": false, + "description": "Omits fields that are illegal to set on transform PUT" } } } diff --git a/x-pack/plugin/src/test/resources/rest-api-spec/api/transform.get_transform.json b/x-pack/plugin/src/test/resources/rest-api-spec/api/transform.get_transform.json index 1ab97aa6a18db..57ad81bdcd225 100644 --- a/x-pack/plugin/src/test/resources/rest-api-spec/api/transform.get_transform.json +++ b/x-pack/plugin/src/test/resources/rest-api-spec/api/transform.get_transform.json @@ -42,6 +42,12 @@ "type":"boolean", "required":false, "description":"Whether to ignore if a wildcard expression matches no transforms. (This includes `_all` string or when no transforms have been specified)" + }, + "for_export": { + "required": false, + "type": "boolean", + "default": false, + "description": "Omits fields that are illegal to set on transform PUT" } } } diff --git a/x-pack/plugin/src/test/resources/rest-api-spec/test/transform/transforms_crud.yml b/x-pack/plugin/src/test/resources/rest-api-spec/test/transform/transforms_crud.yml index 20b49c361b18f..5e100a8383cea 100644 --- a/x-pack/plugin/src/test/resources/rest-api-spec/test/transform/transforms_crud.yml +++ b/x-pack/plugin/src/test/resources/rest-api-spec/test/transform/transforms_crud.yml @@ -670,3 +670,34 @@ setup: }, "description": "yaml test transform on airline-data" } + +--- +"Test transform for export": + - do: + transform.put_transform: + transform_id: "airline-transform" + body: > + { + "source": { "index": "airline-data" }, + "dest": { "index": "airline-data-by-airline" }, + "pivot": { + "group_by": { "airline": {"terms": {"field": "airline"}}}, + "aggs": {"avg_response": {"avg": {"field": "responsetime"}}} + }, + "description": "yaml test transform on airline-data" + } + - match: { acknowledged: true } + + - do: + transform.get_transform: + transform_id: "airline-transform" + for_export: true + + - match: {transforms.0.source.index: "airline-data"} + - match: {transforms.0.dest.index: "airline-data"} + - match: {transforms.0.pivot.group_by.airline.terms.field: "airline"} + - match: {transforms.0.aggregations.avg_response.avg.field: "responsetime"} + - match: {transforms.0.description: "yaml test transform on airline-data"} + - is_false: transforms.0.id + - is_false: transforms.0.create_time + - is_false: transforms.0.version diff --git a/x-pack/plugin/transform/qa/single-node-tests/src/javaRestTest/java/org/elasticsearch/xpack/transform/integration/TransformPivotRestIT.java b/x-pack/plugin/transform/qa/single-node-tests/src/javaRestTest/java/org/elasticsearch/xpack/transform/integration/TransformPivotRestIT.java index 6d5f0489c118f..b7dff5c86c8a8 100644 --- a/x-pack/plugin/transform/qa/single-node-tests/src/javaRestTest/java/org/elasticsearch/xpack/transform/integration/TransformPivotRestIT.java +++ b/x-pack/plugin/transform/qa/single-node-tests/src/javaRestTest/java/org/elasticsearch/xpack/transform/integration/TransformPivotRestIT.java @@ -9,6 +9,7 @@ import org.apache.http.entity.ContentType; import org.apache.http.entity.StringEntity; import org.elasticsearch.client.Request; +import org.elasticsearch.client.Response; import org.elasticsearch.client.ResponseException; import org.elasticsearch.common.Strings; import org.elasticsearch.common.xcontent.XContentBuilder; @@ -1683,6 +1684,36 @@ public void testPivotWithFilter() throws Exception { assertEquals(3, actual.longValue()); } + @SuppressWarnings("unchecked") + public void testExportAndImport() throws Exception { + String transformId = "export-transform"; + String transformIndex = "export_reviews"; + setupDataAccessRole(DATA_ACCESS_ROLE, REVIEWS_INDEX_NAME, transformIndex); + + createPivotReviewsTransform(transformId, transformIndex, null, null, BASIC_AUTH_VALUE_TRANSFORM_ADMIN_WITH_SOME_DATA_ACCESS); + + Response response = adminClient().performRequest(new Request("GET", + getTransformEndpoint() + transformId + "?for_export=true")); + Map storedConfig = ((List>) XContentMapValues.extractValue( + "transforms", + entityAsMap(response))) + .get(0); + try (XContentBuilder builder = jsonBuilder()) { + builder.map(storedConfig); + Request putTransform = new Request("PUT", getTransformEndpoint() + transformId + "-import"); + putTransform.setJsonEntity(Strings.toString(builder)); + adminClient().performRequest(putTransform); + } + + response = adminClient().performRequest(new Request("GET", + getTransformEndpoint() + transformId + "-import" + "?for_export=true")); + Map importConfig = ((List>) XContentMapValues.extractValue( + "transforms", + entityAsMap(response))) + .get(0); + assertThat(storedConfig, equalTo(importConfig)); + } + private void createDateNanoIndex(String indexName, int numDocs) throws IOException { // create mapping try (XContentBuilder builder = jsonBuilder()) { diff --git a/x-pack/plugin/transform/src/main/java/org/elasticsearch/xpack/transform/rest/action/RestGetTransformAction.java b/x-pack/plugin/transform/src/main/java/org/elasticsearch/xpack/transform/rest/action/RestGetTransformAction.java index f57e830debe7b..018bd82bb3bd0 100644 --- a/x-pack/plugin/transform/src/main/java/org/elasticsearch/xpack/transform/rest/action/RestGetTransformAction.java +++ b/x-pack/plugin/transform/src/main/java/org/elasticsearch/xpack/transform/rest/action/RestGetTransformAction.java @@ -14,10 +14,13 @@ import org.elasticsearch.xpack.core.transform.TransformField; import org.elasticsearch.xpack.core.transform.action.GetTransformAction; +import java.util.Collections; import java.util.List; +import java.util.Set; import static org.elasticsearch.rest.RestRequest.Method.GET; import static org.elasticsearch.xpack.core.transform.TransformField.ALLOW_NO_MATCH; +import static org.elasticsearch.xpack.core.transform.TransformField.FOR_EXPORT; public class RestGetTransformAction extends BaseRestHandler { @@ -47,4 +50,9 @@ protected RestChannelConsumer prepareRequest(RestRequest restRequest, NodeClient public String getName() { return "transform_get_transform_action"; } + + @Override + protected Set responseParams() { + return Collections.singleton(FOR_EXPORT); + } } diff --git a/x-pack/plugin/transform/src/main/java/org/elasticsearch/xpack/transform/rest/action/compat/RestGetTransformActionDeprecated.java b/x-pack/plugin/transform/src/main/java/org/elasticsearch/xpack/transform/rest/action/compat/RestGetTransformActionDeprecated.java index 211e197a4b736..020823f279229 100644 --- a/x-pack/plugin/transform/src/main/java/org/elasticsearch/xpack/transform/rest/action/compat/RestGetTransformActionDeprecated.java +++ b/x-pack/plugin/transform/src/main/java/org/elasticsearch/xpack/transform/rest/action/compat/RestGetTransformActionDeprecated.java @@ -18,9 +18,11 @@ import java.util.Collections; import java.util.List; +import java.util.Set; import static org.elasticsearch.rest.RestRequest.Method.GET; import static org.elasticsearch.xpack.core.transform.TransformField.ALLOW_NO_MATCH; +import static org.elasticsearch.xpack.core.transform.TransformField.FOR_EXPORT; public class RestGetTransformActionDeprecated extends BaseRestHandler { @Override @@ -56,4 +58,9 @@ protected RestChannelConsumer prepareRequest(RestRequest restRequest, NodeClient public String getName() { return "data_frame_get_transforms_action"; } + + @Override + protected Set responseParams() { + return Collections.singleton(FOR_EXPORT); + } } From d088f1677fcbd6359d166b1b6ba4628bdd12b487 Mon Sep 17 00:00:00 2001 From: Benjamin Trent <4357155+benwtrent@users.noreply.github.com> Date: Wed, 30 Sep 2020 15:01:45 -0400 Subject: [PATCH 2/9] fixing yaml format --- .../resources/rest-api-spec/test/transform/transforms_crud.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/x-pack/plugin/src/test/resources/rest-api-spec/test/transform/transforms_crud.yml b/x-pack/plugin/src/test/resources/rest-api-spec/test/transform/transforms_crud.yml index 5e100a8383cea..f1e890dd87f63 100644 --- a/x-pack/plugin/src/test/resources/rest-api-spec/test/transform/transforms_crud.yml +++ b/x-pack/plugin/src/test/resources/rest-api-spec/test/transform/transforms_crud.yml @@ -686,7 +686,7 @@ setup: }, "description": "yaml test transform on airline-data" } - - match: { acknowledged: true } + - match: { acknowledged: true } - do: transform.get_transform: From 95d9500f217ecf6d5184e34baa97fd498a87dff8 Mon Sep 17 00:00:00 2001 From: Benjamin Trent <4357155+benwtrent@users.noreply.github.com> Date: Wed, 30 Sep 2020 15:22:04 -0400 Subject: [PATCH 3/9] more yaml formatting fixes --- .../rest-api-spec/test/transform/transforms_crud.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/x-pack/plugin/src/test/resources/rest-api-spec/test/transform/transforms_crud.yml b/x-pack/plugin/src/test/resources/rest-api-spec/test/transform/transforms_crud.yml index f1e890dd87f63..dd64342f759bf 100644 --- a/x-pack/plugin/src/test/resources/rest-api-spec/test/transform/transforms_crud.yml +++ b/x-pack/plugin/src/test/resources/rest-api-spec/test/transform/transforms_crud.yml @@ -689,9 +689,9 @@ setup: - match: { acknowledged: true } - do: - transform.get_transform: - transform_id: "airline-transform" - for_export: true + transform.get_transform: + transform_id: "airline-transform" + for_export: true - match: {transforms.0.source.index: "airline-data"} - match: {transforms.0.dest.index: "airline-data"} From 078232189fa13e25757809ab50831f927aa017c7 Mon Sep 17 00:00:00 2001 From: Benjamin Trent <4357155+benwtrent@users.noreply.github.com> Date: Fri, 2 Oct 2020 08:26:57 -0400 Subject: [PATCH 4/9] addressing PR comments --- .../core/transform/transforms/SourceConfig.java | 7 ++++++- .../core/transform/transforms/TransformConfig.java | 13 +++++++++---- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/transform/transforms/SourceConfig.java b/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/transform/transforms/SourceConfig.java index b3478e89520c0..c40ed7e0163cf 100644 --- a/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/transform/transforms/SourceConfig.java +++ b/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/transform/transforms/SourceConfig.java @@ -16,6 +16,7 @@ import org.elasticsearch.common.xcontent.XContentBuilder; import org.elasticsearch.common.xcontent.XContentParser; import org.elasticsearch.license.RemoteClusterLicenseChecker; +import org.elasticsearch.xpack.core.transform.TransformField; import org.elasticsearch.xpack.core.transform.utils.ExceptionsHelper; import java.io.IOException; @@ -113,7 +114,11 @@ public void writeTo(StreamOutput out) throws IOException { public XContentBuilder toXContent(XContentBuilder builder, Params params) throws IOException { builder.startObject(); builder.array(INDEX.getPreferredName(), index); - builder.field(QUERY.getPreferredName(), queryConfig); + if (params.paramAsBoolean(TransformField.FOR_EXPORT, false) == false) { + builder.field(QUERY.getPreferredName(), queryConfig); + } else if(queryConfig.equals(QueryConfig.matchAll()) == false) { + builder.field(QUERY.getPreferredName(), queryConfig); + } builder.endObject(); return builder; } diff --git a/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/transform/transforms/TransformConfig.java b/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/transform/transforms/TransformConfig.java index 0ba9c805b81bd..7da5af34f66af 100644 --- a/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/transform/transforms/TransformConfig.java +++ b/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/transform/transforms/TransformConfig.java @@ -342,10 +342,15 @@ public void writeTo(final StreamOutput out) throws IOException { @Override public XContentBuilder toXContent(final XContentBuilder builder, final Params params) throws IOException { + final boolean forExport = params.paramAsBoolean(TransformField.FOR_EXPORT, false); + final boolean forInternalStorage = params.paramAsBoolean(TransformField.FOR_INTERNAL_STORAGE, false); + if (forInternalStorage) { + assert forExport == false: "unsupported behavior, for_export is true and for_internal_storage is true"; + } builder.startObject(); - if (params.paramAsBoolean(TransformField.FOR_EXPORT, false) == false) { + if (forExport == false) { builder.field(TransformField.ID.getPreferredName(), id); - if (headers.isEmpty() == false && params.paramAsBoolean(TransformField.FOR_INTERNAL_STORAGE, false)) { + if (headers.isEmpty() == false && forInternalStorage) { builder.field(HEADERS.getPreferredName(), headers); } if (transformVersion != null) { @@ -358,11 +363,11 @@ public XContentBuilder toXContent(final XContentBuilder builder, final Params pa createTime.toEpochMilli() ); } - if (params.paramAsBoolean(TransformField.FOR_INTERNAL_STORAGE, false)) { + if (forInternalStorage) { builder.field(TransformField.INDEX_DOC_TYPE.getPreferredName(), NAME); } } - builder.field(TransformField.SOURCE.getPreferredName(), source); + builder.field(TransformField.SOURCE.getPreferredName(), source, params); builder.field(TransformField.DESTINATION.getPreferredName(), dest); if (frequency != null) { builder.field(TransformField.FREQUENCY.getPreferredName(), frequency.getStringRep()); From a1ec6fe3fca955b8072120eb50a6e2ec62a7a3de Mon Sep 17 00:00:00 2001 From: Benjamin Trent <4357155+benwtrent@users.noreply.github.com> Date: Mon, 19 Oct 2020 14:47:10 -0400 Subject: [PATCH 5/9] adjusting name and behavior; --- .../client/TransformRequestConverters.java | 6 +++--- .../client/transform/GetTransformRequest.java | 16 ++++++++-------- .../documentation/TransformDocumentationIT.java | 2 +- .../transform/apis/get-transform.asciidoc | 2 +- .../xpack/core/transform/TransformField.java | 2 +- .../core/transform/transforms/SourceConfig.java | 2 +- .../transform/transforms/TransformConfig.java | 8 ++++---- ...frame_transform_deprecated.get_transform.json | 4 ++-- .../api/transform.get_transform.json | 2 +- .../test/transform/transforms_crud.yml | 2 +- .../integration/TransformPivotRestIT.java | 6 ++++-- .../rest/action/RestGetTransformAction.java | 4 ++-- .../compat/RestGetTransformActionDeprecated.java | 4 ++-- 13 files changed, 31 insertions(+), 29 deletions(-) diff --git a/client/rest-high-level/src/main/java/org/elasticsearch/client/TransformRequestConverters.java b/client/rest-high-level/src/main/java/org/elasticsearch/client/TransformRequestConverters.java index df04df2972732..53daf463941ff 100644 --- a/client/rest-high-level/src/main/java/org/elasticsearch/client/TransformRequestConverters.java +++ b/client/rest-high-level/src/main/java/org/elasticsearch/client/TransformRequestConverters.java @@ -40,7 +40,7 @@ import static org.elasticsearch.client.RequestConverters.createEntity; import static org.elasticsearch.client.transform.DeleteTransformRequest.FORCE; import static org.elasticsearch.client.transform.GetTransformRequest.ALLOW_NO_MATCH; -import static org.elasticsearch.client.transform.GetTransformRequest.FOR_EXPORT; +import static org.elasticsearch.client.transform.GetTransformRequest.EXCLUDE_GENERATED; import static org.elasticsearch.client.transform.PutTransformRequest.DEFER_VALIDATION; import static org.elasticsearch.client.transform.StopTransformRequest.WAIT_FOR_CHECKPOINT; @@ -90,8 +90,8 @@ static Request getTransform(GetTransformRequest getRequest) { if (getRequest.getAllowNoMatch() != null) { request.addParameter(ALLOW_NO_MATCH, getRequest.getAllowNoMatch().toString()); } - if (getRequest.getForExport() != null) { - request.addParameter(FOR_EXPORT, getRequest.getForExport().toString()); + if (getRequest.getExcludeGenerated() != null) { + request.addParameter(EXCLUDE_GENERATED, getRequest.getExcludeGenerated().toString()); } return request; } diff --git a/client/rest-high-level/src/main/java/org/elasticsearch/client/transform/GetTransformRequest.java b/client/rest-high-level/src/main/java/org/elasticsearch/client/transform/GetTransformRequest.java index d22eaf0217e8b..184222244732b 100644 --- a/client/rest-high-level/src/main/java/org/elasticsearch/client/transform/GetTransformRequest.java +++ b/client/rest-high-level/src/main/java/org/elasticsearch/client/transform/GetTransformRequest.java @@ -30,7 +30,7 @@ public class GetTransformRequest implements Validatable { - public static final String FOR_EXPORT = "for_export"; + public static final String EXCLUDE_GENERATED = "exclude_generated"; public static final String ALLOW_NO_MATCH = "allow_no_match"; /** * Helper method to create a request that will get ALL Transforms @@ -43,7 +43,7 @@ public static GetTransformRequest getAllTransformRequest() { private final List ids; private PageParams pageParams; private Boolean allowNoMatch; - private Boolean forExport; + private Boolean excludeGenerated; public GetTransformRequest(String... ids) { this.ids = Arrays.asList(ids); @@ -69,12 +69,12 @@ public void setAllowNoMatch(Boolean allowNoMatch) { this.allowNoMatch = allowNoMatch; } - public void setForExport(boolean forExport) { - this.forExport = forExport; + public void setExcludeGenerated(boolean excludeGenerated) { + this.excludeGenerated = excludeGenerated; } - public Boolean getForExport() { - return forExport; + public Boolean getExcludeGenerated() { + return excludeGenerated; } @Override @@ -90,7 +90,7 @@ public Optional validate() { @Override public int hashCode() { - return Objects.hash(ids, pageParams, forExport, allowNoMatch); + return Objects.hash(ids, pageParams, excludeGenerated, allowNoMatch); } @Override @@ -105,7 +105,7 @@ public boolean equals(Object obj) { GetTransformRequest other = (GetTransformRequest) obj; return Objects.equals(ids, other.ids) && Objects.equals(pageParams, other.pageParams) - && Objects.equals(forExport, other.forExport) + && Objects.equals(excludeGenerated, other.excludeGenerated) && Objects.equals(allowNoMatch, other.allowNoMatch); } } diff --git a/client/rest-high-level/src/test/java/org/elasticsearch/client/documentation/TransformDocumentationIT.java b/client/rest-high-level/src/test/java/org/elasticsearch/client/documentation/TransformDocumentationIT.java index 646da9c7b8a7c..766f3f2a292e2 100644 --- a/client/rest-high-level/src/test/java/org/elasticsearch/client/documentation/TransformDocumentationIT.java +++ b/client/rest-high-level/src/test/java/org/elasticsearch/client/documentation/TransformDocumentationIT.java @@ -687,7 +687,7 @@ public void testGetDataFrameTransform() throws IOException, InterruptedException // tag::get-transform-request-options request.setPageParams(new PageParams(0, 100)); // <1> request.setAllowNoMatch(true); // <2> - request.setForExport(false); // <3> + request.setExcludeGenerated(false); // <3> // end::get-transform-request-options // tag::get-transform-execute diff --git a/docs/reference/transform/apis/get-transform.asciidoc b/docs/reference/transform/apis/get-transform.asciidoc index b6c293e359283..e2f7c1ff00b3e 100644 --- a/docs/reference/transform/apis/get-transform.asciidoc +++ b/docs/reference/transform/apis/get-transform.asciidoc @@ -65,7 +65,7 @@ include::{es-repo-dir}/rest-api/common-parms.asciidoc[tag=from-transforms] (Optional, integer) include::{es-repo-dir}/rest-api/common-parms.asciidoc[tag=size-transforms] -`for_export`:: +`exclude_generated`:: (Optional, boolean) Indicates if certain fields should be removed from the configuration on retrieval. This allows the configuration to be in an acceptable format to be retrieved diff --git a/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/transform/TransformField.java b/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/transform/TransformField.java index 5fa66d10e2297..cb52699c5b26d 100644 --- a/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/transform/TransformField.java +++ b/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/transform/TransformField.java @@ -84,7 +84,7 @@ public final class TransformField { * API's) */ public static final String FOR_INTERNAL_STORAGE = "for_internal_storage"; - public static final String FOR_EXPORT = "for_export"; + public static final String EXCLUDE_GENERATED = "exclude_generated"; // internal document id public static String DOCUMENT_ID_FIELD = "_id"; diff --git a/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/transform/transforms/SourceConfig.java b/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/transform/transforms/SourceConfig.java index c40ed7e0163cf..3e30482daef0c 100644 --- a/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/transform/transforms/SourceConfig.java +++ b/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/transform/transforms/SourceConfig.java @@ -114,7 +114,7 @@ public void writeTo(StreamOutput out) throws IOException { public XContentBuilder toXContent(XContentBuilder builder, Params params) throws IOException { builder.startObject(); builder.array(INDEX.getPreferredName(), index); - if (params.paramAsBoolean(TransformField.FOR_EXPORT, false) == false) { + if (params.paramAsBoolean(TransformField.EXCLUDE_GENERATED, false) == false) { builder.field(QUERY.getPreferredName(), queryConfig); } else if(queryConfig.equals(QueryConfig.matchAll()) == false) { builder.field(QUERY.getPreferredName(), queryConfig); diff --git a/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/transform/transforms/TransformConfig.java b/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/transform/transforms/TransformConfig.java index 7da5af34f66af..fba4833c5b2ec 100644 --- a/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/transform/transforms/TransformConfig.java +++ b/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/transform/transforms/TransformConfig.java @@ -342,14 +342,14 @@ public void writeTo(final StreamOutput out) throws IOException { @Override public XContentBuilder toXContent(final XContentBuilder builder, final Params params) throws IOException { - final boolean forExport = params.paramAsBoolean(TransformField.FOR_EXPORT, false); + final boolean excludeGenerated = params.paramAsBoolean(TransformField.EXCLUDE_GENERATED, false); final boolean forInternalStorage = params.paramAsBoolean(TransformField.FOR_INTERNAL_STORAGE, false); if (forInternalStorage) { - assert forExport == false: "unsupported behavior, for_export is true and for_internal_storage is true"; + assert excludeGenerated == false: "unsupported behavior, exclude_generated is true and for_internal_storage is true"; } builder.startObject(); - if (forExport == false) { - builder.field(TransformField.ID.getPreferredName(), id); + builder.field(TransformField.ID.getPreferredName(), id); + if (excludeGenerated == false) { if (headers.isEmpty() == false && forInternalStorage) { builder.field(HEADERS.getPreferredName(), headers); } diff --git a/x-pack/plugin/src/test/resources/rest-api-spec/api/data_frame_transform_deprecated.get_transform.json b/x-pack/plugin/src/test/resources/rest-api-spec/api/data_frame_transform_deprecated.get_transform.json index ca68e63fa1346..22726a9596332 100644 --- a/x-pack/plugin/src/test/resources/rest-api-spec/api/data_frame_transform_deprecated.get_transform.json +++ b/x-pack/plugin/src/test/resources/rest-api-spec/api/data_frame_transform_deprecated.get_transform.json @@ -51,11 +51,11 @@ "required":false, "description":"Whether to ignore if a wildcard expression matches no transforms. (This includes `_all` string or when no transforms have been specified)" }, - "for_export": { + "exclude_generated": { "required": false, "type": "boolean", "default": false, - "description": "Omits fields that are illegal to set on transform PUT" + "description": "Omits generated fields. Allows transform configurations to be easily copied between clusters and within the same cluster" } } } diff --git a/x-pack/plugin/src/test/resources/rest-api-spec/api/transform.get_transform.json b/x-pack/plugin/src/test/resources/rest-api-spec/api/transform.get_transform.json index 57ad81bdcd225..69e87d9755477 100644 --- a/x-pack/plugin/src/test/resources/rest-api-spec/api/transform.get_transform.json +++ b/x-pack/plugin/src/test/resources/rest-api-spec/api/transform.get_transform.json @@ -43,7 +43,7 @@ "required":false, "description":"Whether to ignore if a wildcard expression matches no transforms. (This includes `_all` string or when no transforms have been specified)" }, - "for_export": { + "exclude_generated": { "required": false, "type": "boolean", "default": false, diff --git a/x-pack/plugin/src/test/resources/rest-api-spec/test/transform/transforms_crud.yml b/x-pack/plugin/src/test/resources/rest-api-spec/test/transform/transforms_crud.yml index dd64342f759bf..ea8f9b2eaaf58 100644 --- a/x-pack/plugin/src/test/resources/rest-api-spec/test/transform/transforms_crud.yml +++ b/x-pack/plugin/src/test/resources/rest-api-spec/test/transform/transforms_crud.yml @@ -691,7 +691,7 @@ setup: - do: transform.get_transform: transform_id: "airline-transform" - for_export: true + exclude_generated: true - match: {transforms.0.source.index: "airline-data"} - match: {transforms.0.dest.index: "airline-data"} diff --git a/x-pack/plugin/transform/qa/single-node-tests/src/javaRestTest/java/org/elasticsearch/xpack/transform/integration/TransformPivotRestIT.java b/x-pack/plugin/transform/qa/single-node-tests/src/javaRestTest/java/org/elasticsearch/xpack/transform/integration/TransformPivotRestIT.java index 1cf2882a9d1bc..b4dd50b0983fe 100644 --- a/x-pack/plugin/transform/qa/single-node-tests/src/javaRestTest/java/org/elasticsearch/xpack/transform/integration/TransformPivotRestIT.java +++ b/x-pack/plugin/transform/qa/single-node-tests/src/javaRestTest/java/org/elasticsearch/xpack/transform/integration/TransformPivotRestIT.java @@ -1696,11 +1696,12 @@ public void testExportAndImport() throws Exception { createPivotReviewsTransform(transformId, transformIndex, null, null, BASIC_AUTH_VALUE_TRANSFORM_ADMIN_WITH_SOME_DATA_ACCESS); Response response = adminClient().performRequest(new Request("GET", - getTransformEndpoint() + transformId + "?for_export=true")); + getTransformEndpoint() + transformId + "?exclude_generated=true")); Map storedConfig = ((List>) XContentMapValues.extractValue( "transforms", entityAsMap(response))) .get(0); + storedConfig.remove("id"); try (XContentBuilder builder = jsonBuilder()) { builder.map(storedConfig); Request putTransform = new Request("PUT", getTransformEndpoint() + transformId + "-import"); @@ -1709,11 +1710,12 @@ public void testExportAndImport() throws Exception { } response = adminClient().performRequest(new Request("GET", - getTransformEndpoint() + transformId + "-import" + "?for_export=true")); + getTransformEndpoint() + transformId + "-import" + "?exclude_generated=true")); Map importConfig = ((List>) XContentMapValues.extractValue( "transforms", entityAsMap(response))) .get(0); + importConfig.remove("id"); assertThat(storedConfig, equalTo(importConfig)); } diff --git a/x-pack/plugin/transform/src/main/java/org/elasticsearch/xpack/transform/rest/action/RestGetTransformAction.java b/x-pack/plugin/transform/src/main/java/org/elasticsearch/xpack/transform/rest/action/RestGetTransformAction.java index 018bd82bb3bd0..a6b599aafde36 100644 --- a/x-pack/plugin/transform/src/main/java/org/elasticsearch/xpack/transform/rest/action/RestGetTransformAction.java +++ b/x-pack/plugin/transform/src/main/java/org/elasticsearch/xpack/transform/rest/action/RestGetTransformAction.java @@ -20,7 +20,7 @@ import static org.elasticsearch.rest.RestRequest.Method.GET; import static org.elasticsearch.xpack.core.transform.TransformField.ALLOW_NO_MATCH; -import static org.elasticsearch.xpack.core.transform.TransformField.FOR_EXPORT; +import static org.elasticsearch.xpack.core.transform.TransformField.EXCLUDE_GENERATED; public class RestGetTransformAction extends BaseRestHandler { @@ -53,6 +53,6 @@ public String getName() { @Override protected Set responseParams() { - return Collections.singleton(FOR_EXPORT); + return Collections.singleton(EXCLUDE_GENERATED); } } diff --git a/x-pack/plugin/transform/src/main/java/org/elasticsearch/xpack/transform/rest/action/compat/RestGetTransformActionDeprecated.java b/x-pack/plugin/transform/src/main/java/org/elasticsearch/xpack/transform/rest/action/compat/RestGetTransformActionDeprecated.java index 020823f279229..dcf0a49416731 100644 --- a/x-pack/plugin/transform/src/main/java/org/elasticsearch/xpack/transform/rest/action/compat/RestGetTransformActionDeprecated.java +++ b/x-pack/plugin/transform/src/main/java/org/elasticsearch/xpack/transform/rest/action/compat/RestGetTransformActionDeprecated.java @@ -22,7 +22,7 @@ import static org.elasticsearch.rest.RestRequest.Method.GET; import static org.elasticsearch.xpack.core.transform.TransformField.ALLOW_NO_MATCH; -import static org.elasticsearch.xpack.core.transform.TransformField.FOR_EXPORT; +import static org.elasticsearch.xpack.core.transform.TransformField.EXCLUDE_GENERATED; public class RestGetTransformActionDeprecated extends BaseRestHandler { @Override @@ -61,6 +61,6 @@ public String getName() { @Override protected Set responseParams() { - return Collections.singleton(FOR_EXPORT); + return Collections.singleton(EXCLUDE_GENERATED); } } From cb75eb4fcb951520f1fe376e382f11b3dca86c5d Mon Sep 17 00:00:00 2001 From: Benjamin Trent <4357155+benwtrent@users.noreply.github.com> Date: Mon, 19 Oct 2020 15:21:59 -0400 Subject: [PATCH 6/9] fixing yaml test --- .../resources/rest-api-spec/test/transform/transforms_crud.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/x-pack/plugin/src/test/resources/rest-api-spec/test/transform/transforms_crud.yml b/x-pack/plugin/src/test/resources/rest-api-spec/test/transform/transforms_crud.yml index ea8f9b2eaaf58..72ca2549f7426 100644 --- a/x-pack/plugin/src/test/resources/rest-api-spec/test/transform/transforms_crud.yml +++ b/x-pack/plugin/src/test/resources/rest-api-spec/test/transform/transforms_crud.yml @@ -693,11 +693,12 @@ setup: transform_id: "airline-transform" exclude_generated: true - - match: {transforms.0.source.index: "airline-data"} + - match: {transforms.0.source.index: ["airline-data"]} - match: {transforms.0.dest.index: "airline-data"} - match: {transforms.0.pivot.group_by.airline.terms.field: "airline"} - match: {transforms.0.aggregations.avg_response.avg.field: "responsetime"} - match: {transforms.0.description: "yaml test transform on airline-data"} + - match: {transforms.0.id: "airline-transform"} - is_false: transforms.0.id - is_false: transforms.0.create_time - is_false: transforms.0.version From a2e65f80887ef54417d77063b60357b436b37283 Mon Sep 17 00:00:00 2001 From: Benjamin Trent <4357155+benwtrent@users.noreply.github.com> Date: Tue, 20 Oct 2020 07:49:17 -0400 Subject: [PATCH 7/9] addressing pr comments --- docs/reference/transform/apis/get-transform.asciidoc | 4 ++-- .../xpack/core/transform/transforms/TransformConfig.java | 5 ++--- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/docs/reference/transform/apis/get-transform.asciidoc b/docs/reference/transform/apis/get-transform.asciidoc index e2f7c1ff00b3e..c9a80ab113569 100644 --- a/docs/reference/transform/apis/get-transform.asciidoc +++ b/docs/reference/transform/apis/get-transform.asciidoc @@ -67,8 +67,8 @@ include::{es-repo-dir}/rest-api/common-parms.asciidoc[tag=size-transforms] `exclude_generated`:: (Optional, boolean) -Indicates if certain fields should be removed from the configuration on -retrieval. This allows the configuration to be in an acceptable format to be retrieved +Excludes fields that were automatically added when creating the transform. +This allows the configuration to be in an acceptable format to be retrieved and then added to another cluster. Default is false. [[get-transform-response]] diff --git a/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/transform/transforms/TransformConfig.java b/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/transform/transforms/TransformConfig.java index fba4833c5b2ec..d5b3e7ddb74a5 100644 --- a/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/transform/transforms/TransformConfig.java +++ b/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/transform/transforms/TransformConfig.java @@ -344,9 +344,8 @@ public void writeTo(final StreamOutput out) throws IOException { public XContentBuilder toXContent(final XContentBuilder builder, final Params params) throws IOException { final boolean excludeGenerated = params.paramAsBoolean(TransformField.EXCLUDE_GENERATED, false); final boolean forInternalStorage = params.paramAsBoolean(TransformField.FOR_INTERNAL_STORAGE, false); - if (forInternalStorage) { - assert excludeGenerated == false: "unsupported behavior, exclude_generated is true and for_internal_storage is true"; - } + assert (forInternalStorage && excludeGenerated) == false: + "unsupported behavior, exclude_generated is true and for_internal_storage is true"; builder.startObject(); builder.field(TransformField.ID.getPreferredName(), id); if (excludeGenerated == false) { From dc564b0a6b58deebb493ce546777a2d5bf9f4b8a Mon Sep 17 00:00:00 2001 From: Benjamin Trent <4357155+benwtrent@users.noreply.github.com> Date: Tue, 20 Oct 2020 07:50:16 -0400 Subject: [PATCH 8/9] fixing test --- .../resources/rest-api-spec/test/transform/transforms_crud.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/x-pack/plugin/src/test/resources/rest-api-spec/test/transform/transforms_crud.yml b/x-pack/plugin/src/test/resources/rest-api-spec/test/transform/transforms_crud.yml index 72ca2549f7426..064985c0b86e2 100644 --- a/x-pack/plugin/src/test/resources/rest-api-spec/test/transform/transforms_crud.yml +++ b/x-pack/plugin/src/test/resources/rest-api-spec/test/transform/transforms_crud.yml @@ -694,11 +694,10 @@ setup: exclude_generated: true - match: {transforms.0.source.index: ["airline-data"]} - - match: {transforms.0.dest.index: "airline-data"} + - match: {transforms.0.dest.index: "airline-data-by-airline"} - match: {transforms.0.pivot.group_by.airline.terms.field: "airline"} - match: {transforms.0.aggregations.avg_response.avg.field: "responsetime"} - match: {transforms.0.description: "yaml test transform on airline-data"} - match: {transforms.0.id: "airline-transform"} - - is_false: transforms.0.id - is_false: transforms.0.create_time - is_false: transforms.0.version From 66c53a176758f5415f9067f770c63efbe500f799 Mon Sep 17 00:00:00 2001 From: Benjamin Trent <4357155+benwtrent@users.noreply.github.com> Date: Tue, 20 Oct 2020 08:21:47 -0400 Subject: [PATCH 9/9] fixing test --- .../resources/rest-api-spec/test/transform/transforms_crud.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/x-pack/plugin/src/test/resources/rest-api-spec/test/transform/transforms_crud.yml b/x-pack/plugin/src/test/resources/rest-api-spec/test/transform/transforms_crud.yml index 064985c0b86e2..5fd1a726602c5 100644 --- a/x-pack/plugin/src/test/resources/rest-api-spec/test/transform/transforms_crud.yml +++ b/x-pack/plugin/src/test/resources/rest-api-spec/test/transform/transforms_crud.yml @@ -696,7 +696,7 @@ setup: - match: {transforms.0.source.index: ["airline-data"]} - match: {transforms.0.dest.index: "airline-data-by-airline"} - match: {transforms.0.pivot.group_by.airline.terms.field: "airline"} - - match: {transforms.0.aggregations.avg_response.avg.field: "responsetime"} + - match: {transforms.0.pivot.aggregations.avg_response.avg.field: "responsetime"} - match: {transforms.0.description: "yaml test transform on airline-data"} - match: {transforms.0.id: "airline-transform"} - is_false: transforms.0.create_time