diff --git a/client/rest-high-level/src/test/java/org/elasticsearch/client/MachineLearningIT.java b/client/rest-high-level/src/test/java/org/elasticsearch/client/MachineLearningIT.java index 5a92602d004f..61b414509cf9 100644 --- a/client/rest-high-level/src/test/java/org/elasticsearch/client/MachineLearningIT.java +++ b/client/rest-high-level/src/test/java/org/elasticsearch/client/MachineLearningIT.java @@ -436,9 +436,10 @@ public class MachineLearningIT extends ESRestHighLevelClientTestCase { } public void testUpdateDatafeed() throws Exception { + MachineLearningClient machineLearningClient = highLevelClient().machineLearning(); + String jobId = randomValidJobId(); Job job = buildJob(jobId); - MachineLearningClient machineLearningClient = highLevelClient().machineLearning(); execute(new PutJobRequest(job), machineLearningClient::putJob, machineLearningClient::putJobAsync); String datafeedId = "datafeed-" + jobId; @@ -462,6 +463,31 @@ public class MachineLearningIT extends ESRestHighLevelClientTestCase { assertThat(datafeedUpdate.getScrollSize(), equalTo(updatedDatafeed.getScrollSize())); } + public void testUpdateDatafeed_UpdatingJobIdIsDeprecated() throws Exception { + MachineLearningClient machineLearningClient = highLevelClient().machineLearning(); + + String jobId = randomValidJobId(); + Job job = buildJob(jobId); + execute(new PutJobRequest(job), machineLearningClient::putJob, machineLearningClient::putJobAsync); + + String anotherJobId = randomValidJobId(); + Job anotherJob = buildJob(anotherJobId); + execute(new PutJobRequest(anotherJob), machineLearningClient::putJob, machineLearningClient::putJobAsync); + + String datafeedId = "datafeed-" + jobId; + DatafeedConfig datafeedConfig = DatafeedConfig.builder(datafeedId, jobId).setIndices("some_data_index").build(); + execute(new PutDatafeedRequest(datafeedConfig), machineLearningClient::putDatafeed, machineLearningClient::putDatafeedAsync); + + DatafeedUpdate datafeedUpdateWithChangedJobId = DatafeedUpdate.builder(datafeedId).setJobId(anotherJobId).build(); + WarningFailureException exception = expectThrows( + WarningFailureException.class, + () -> execute( + new UpdateDatafeedRequest(datafeedUpdateWithChangedJobId), + machineLearningClient::updateDatafeed, + machineLearningClient::updateDatafeedAsync)); + assertThat(exception.getResponse().getWarnings(), contains("The ability to update a datafeed's job_id is deprecated.")); + } + public void testGetDatafeed() throws Exception { String jobId1 = "test-get-datafeed-job-1"; String jobId2 = "test-get-datafeed-job-2"; diff --git a/client/rest-high-level/src/test/java/org/elasticsearch/client/documentation/MlClientDocumentationIT.java b/client/rest-high-level/src/test/java/org/elasticsearch/client/documentation/MlClientDocumentationIT.java index 93f196212ca0..22e2b97ebeea 100644 --- a/client/rest-high-level/src/test/java/org/elasticsearch/client/documentation/MlClientDocumentationIT.java +++ b/client/rest-high-level/src/test/java/org/elasticsearch/client/documentation/MlClientDocumentationIT.java @@ -730,8 +730,7 @@ public class MlClientDocumentationIT extends ESRestHighLevelClientTestCase { .setQuery(QueryBuilders.matchAllQuery()) // <6> .setQueryDelay(TimeValue.timeValueMinutes(1)) // <7> .setScriptFields(scriptFields) // <8> - .setScrollSize(1000) // <9> - .setJobId("update-datafeed-job"); // <10> + .setScrollSize(1000); // <9> // end::update-datafeed-config // Clearing aggregation to avoid complex validation rules diff --git a/docs/java-rest/high-level/ml/update-datafeed.asciidoc b/docs/java-rest/high-level/ml/update-datafeed.asciidoc index 86e3a4de336e..0073bfb7bce6 100644 --- a/docs/java-rest/high-level/ml/update-datafeed.asciidoc +++ b/docs/java-rest/high-level/ml/update-datafeed.asciidoc @@ -40,8 +40,6 @@ include-tagged::{doc-tests-file}[{api}-config] <7> Optional, the time interval behind real time that data is queried. <8> Optional, allows the use of script fields. <9> Optional, the `size` parameter used in the searches. -<10> Optional, the `jobId` that references the job that the datafeed should be associated with -after the update. include::../execution.asciidoc[] diff --git a/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/ml/datafeed/DatafeedUpdate.java b/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/ml/datafeed/DatafeedUpdate.java index 1a848f86138f..da9423f6ec7a 100644 --- a/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/ml/datafeed/DatafeedUpdate.java +++ b/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/ml/datafeed/DatafeedUpdate.java @@ -5,12 +5,14 @@ */ package org.elasticsearch.xpack.core.ml.datafeed; +import org.apache.logging.log4j.LogManager; import org.elasticsearch.Version; import org.elasticsearch.common.ParseField; import org.elasticsearch.common.Strings; import org.elasticsearch.common.io.stream.StreamInput; import org.elasticsearch.common.io.stream.StreamOutput; import org.elasticsearch.common.io.stream.Writeable; +import org.elasticsearch.common.logging.DeprecationLogger; import org.elasticsearch.common.unit.TimeValue; import org.elasticsearch.common.xcontent.NamedXContentRegistry; import org.elasticsearch.common.xcontent.ObjectParser; @@ -44,6 +46,9 @@ import java.util.stream.Collectors; */ public class DatafeedUpdate implements Writeable, ToXContentObject { + private static final DeprecationLogger deprecationLogger = new DeprecationLogger(LogManager.getLogger(DatafeedUpdate.class)); + private static final String DEPRECATION_MESSAGE_ON_JOB_ID_UPDATE = "The ability to update a datafeed's job_id is deprecated."; + public static final ObjectParser PARSER = new ObjectParser<>("datafeed_update", Builder::new); static { @@ -105,6 +110,9 @@ public class DatafeedUpdate implements Writeable, ToXContentObject { this.scrollSize = scrollSize; this.chunkingConfig = chunkingConfig; this.delayedDataCheckConfig = delayedDataCheckConfig; + if (jobId != null) { + deprecationLogger.deprecated(DEPRECATION_MESSAGE_ON_JOB_ID_UPDATE); + } } public DatafeedUpdate(StreamInput in) throws IOException { diff --git a/x-pack/plugin/core/src/test/java/org/elasticsearch/xpack/core/ml/action/UpdateDatafeedActionRequestTests.java b/x-pack/plugin/core/src/test/java/org/elasticsearch/xpack/core/ml/action/UpdateDatafeedActionRequestTests.java index 97792d1bbad1..790cef606837 100644 --- a/x-pack/plugin/core/src/test/java/org/elasticsearch/xpack/core/ml/action/UpdateDatafeedActionRequestTests.java +++ b/x-pack/plugin/core/src/test/java/org/elasticsearch/xpack/core/ml/action/UpdateDatafeedActionRequestTests.java @@ -30,7 +30,7 @@ public class UpdateDatafeedActionRequestTests extends AbstractSerializingTestCas @Override protected Request createTestInstance() { - return new Request(DatafeedUpdateTests.createRandomized(datafeedId)); + return new Request(DatafeedUpdateTests.createRandomized(datafeedId, null, false)); } @Override diff --git a/x-pack/plugin/core/src/test/java/org/elasticsearch/xpack/core/ml/datafeed/DatafeedUpdateTests.java b/x-pack/plugin/core/src/test/java/org/elasticsearch/xpack/core/ml/datafeed/DatafeedUpdateTests.java index 35bff34f9380..5fc2d0f13be9 100644 --- a/x-pack/plugin/core/src/test/java/org/elasticsearch/xpack/core/ml/datafeed/DatafeedUpdateTests.java +++ b/x-pack/plugin/core/src/test/java/org/elasticsearch/xpack/core/ml/datafeed/DatafeedUpdateTests.java @@ -77,12 +77,12 @@ public class DatafeedUpdateTests extends AbstractSerializingTestCase