|
@@ -80,11 +80,13 @@ import org.elasticsearch.client.ml.StartDatafeedRequest;
|
|
|
import org.elasticsearch.client.ml.StartDatafeedResponse;
|
|
|
import org.elasticsearch.client.ml.StopDatafeedRequest;
|
|
|
import org.elasticsearch.client.ml.StopDatafeedResponse;
|
|
|
+import org.elasticsearch.client.ml.UpdateDatafeedRequest;
|
|
|
import org.elasticsearch.client.ml.UpdateJobRequest;
|
|
|
import org.elasticsearch.client.ml.calendars.Calendar;
|
|
|
import org.elasticsearch.client.ml.datafeed.ChunkingConfig;
|
|
|
import org.elasticsearch.client.ml.datafeed.DatafeedConfig;
|
|
|
import org.elasticsearch.client.ml.datafeed.DatafeedStats;
|
|
|
+import org.elasticsearch.client.ml.datafeed.DatafeedUpdate;
|
|
|
import org.elasticsearch.client.ml.job.config.AnalysisConfig;
|
|
|
import org.elasticsearch.client.ml.job.config.AnalysisLimits;
|
|
|
import org.elasticsearch.client.ml.job.config.DataDescription;
|
|
@@ -630,6 +632,77 @@ public class MlClientDocumentationIT extends ESRestHighLevelClientTestCase {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ public void testUpdateDatafeed() throws Exception {
|
|
|
+ RestHighLevelClient client = highLevelClient();
|
|
|
+
|
|
|
+ Job job = MachineLearningIT.buildJob("update-datafeed-job");
|
|
|
+ client.machineLearning().putJob(new PutJobRequest(job), RequestOptions.DEFAULT);
|
|
|
+ String datafeedId = job.getId() + "-feed";
|
|
|
+ DatafeedConfig datafeed = DatafeedConfig.builder(datafeedId, job.getId()).setIndices("foo").build();
|
|
|
+ client.machineLearning().putDatafeed(new PutDatafeedRequest(datafeed), RequestOptions.DEFAULT);
|
|
|
+
|
|
|
+ {
|
|
|
+ AggregatorFactories.Builder aggs = AggregatorFactories.builder();
|
|
|
+ List<SearchSourceBuilder.ScriptField> scriptFields = Collections.emptyList();
|
|
|
+ // tag::update-datafeed-config
|
|
|
+ DatafeedUpdate.Builder datafeedUpdateBuilder = new DatafeedUpdate.Builder(datafeedId) // <1>
|
|
|
+ .setAggregations(aggs) // <2>
|
|
|
+ .setIndices("index_1", "index_2") // <3>
|
|
|
+ .setChunkingConfig(ChunkingConfig.newAuto()) // <4>
|
|
|
+ .setFrequency(TimeValue.timeValueSeconds(30)) // <5>
|
|
|
+ .setQuery(QueryBuilders.matchAllQuery()) // <6>
|
|
|
+ .setQueryDelay(TimeValue.timeValueMinutes(1)) // <7>
|
|
|
+ .setScriptFields(scriptFields) // <8>
|
|
|
+ .setScrollSize(1000) // <9>
|
|
|
+ .setJobId("update-datafeed-job"); // <10>
|
|
|
+ // end::update-datafeed-config
|
|
|
+
|
|
|
+ // Clearing aggregation to avoid complex validation rules
|
|
|
+ datafeedUpdateBuilder.setAggregations((String) null);
|
|
|
+
|
|
|
+ // tag::update-datafeed-request
|
|
|
+ UpdateDatafeedRequest request = new UpdateDatafeedRequest(datafeedUpdateBuilder.build()); // <1>
|
|
|
+ // end::update-datafeed-request
|
|
|
+
|
|
|
+ // tag::update-datafeed-execute
|
|
|
+ PutDatafeedResponse response = client.machineLearning().updateDatafeed(request, RequestOptions.DEFAULT);
|
|
|
+ // end::update-datafeed-execute
|
|
|
+
|
|
|
+ // tag::update-datafeed-response
|
|
|
+ DatafeedConfig updatedDatafeed = response.getResponse(); // <1>
|
|
|
+ // end::update-datafeed-response
|
|
|
+ assertThat(updatedDatafeed.getId(), equalTo(datafeedId));
|
|
|
+ }
|
|
|
+ {
|
|
|
+ DatafeedUpdate datafeedUpdate = new DatafeedUpdate.Builder(datafeedId).setIndices("index_1", "index_2").build();
|
|
|
+
|
|
|
+ UpdateDatafeedRequest request = new UpdateDatafeedRequest(datafeedUpdate);
|
|
|
+ // tag::update-datafeed-execute-listener
|
|
|
+ ActionListener<PutDatafeedResponse> listener = new ActionListener<PutDatafeedResponse>() {
|
|
|
+ @Override
|
|
|
+ public void onResponse(PutDatafeedResponse response) {
|
|
|
+ // <1>
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void onFailure(Exception e) {
|
|
|
+ // <2>
|
|
|
+ }
|
|
|
+ };
|
|
|
+ // end::update-datafeed-execute-listener
|
|
|
+
|
|
|
+ // Replace the empty listener by a blocking listener in test
|
|
|
+ final CountDownLatch latch = new CountDownLatch(1);
|
|
|
+ listener = new LatchedActionListener<>(listener, latch);
|
|
|
+
|
|
|
+ // tag::update-datafeed-execute-async
|
|
|
+ client.machineLearning().updateDatafeedAsync(request, RequestOptions.DEFAULT, listener); // <1>
|
|
|
+ // end::update-datafeed-execute-async
|
|
|
+
|
|
|
+ assertTrue(latch.await(30L, TimeUnit.SECONDS));
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
public void testGetDatafeed() throws Exception {
|
|
|
RestHighLevelClient client = highLevelClient();
|
|
|
|