Skip to content

Commit a0bf315

Browse files
author
Hendrik Muhs
committed
[Transform] add retention policy to documentation IT (#68728)
add retention policy and sync to documentation IT, add builders for sync and retention policy relates #67832
1 parent 17b441e commit a0bf315

File tree

7 files changed

+98
-11
lines changed

7 files changed

+98
-11
lines changed

client/rest-high-level/src/main/java/org/elasticsearch/client/transform/transforms/TimeRetentionPolicyConfig.java

Lines changed: 34 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ public static TimeRetentionPolicyConfig fromXContent(XContentParser parser) {
5050
return PARSER.apply(parser, null);
5151
}
5252

53-
public TimeRetentionPolicyConfig(String field, TimeValue maxAge) {
53+
TimeRetentionPolicyConfig(String field, TimeValue maxAge) {
5454
this.field = field;
5555
this.maxAge = maxAge;
5656
}
@@ -96,4 +96,37 @@ public int hashCode() {
9696
public String getName() {
9797
return NAME;
9898
}
99+
100+
public static Builder builder() {
101+
return new Builder();
102+
}
103+
104+
public static class Builder {
105+
private String field;
106+
private TimeValue maxAge;
107+
108+
/**
109+
* The time field used to calculate the age of a document.
110+
* @param field The field name to be used to execute the retention policy
111+
* @return The {@link Builder} with the field set.
112+
*/
113+
public Builder setField(String field) {
114+
this.field = field;
115+
return this;
116+
}
117+
118+
/**
119+
* The max age, all documents that are older will be deleted.
120+
* @param maxAge The maximum age of a document
121+
* @return The {@link Builder} with max age set.
122+
*/
123+
public Builder setMaxAge(TimeValue maxAge) {
124+
this.maxAge = maxAge;
125+
return this;
126+
}
127+
128+
public TimeRetentionPolicyConfig build() {
129+
return new TimeRetentionPolicyConfig(field, maxAge);
130+
}
131+
}
99132
}

client/rest-high-level/src/main/java/org/elasticsearch/client/transform/transforms/TimeSyncConfig.java

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,8 @@ public static TimeSyncConfig fromXContent(XContentParser parser) {
4444
return PARSER.apply(parser, null);
4545
}
4646

47+
// Deprecated, the public modifier will be removed in 8.0: use the builder instead
48+
@Deprecated
4749
public TimeSyncConfig(String field, TimeValue delay) {
4850
this.field = field;
4951
this.delay = delay;
@@ -94,4 +96,37 @@ public String getName() {
9496
return NAME;
9597
}
9698

99+
public static Builder builder() {
100+
return new Builder();
101+
}
102+
103+
public static class Builder {
104+
private String field;
105+
private TimeValue delay = TimeValue.ZERO;
106+
107+
/**
108+
* The date field that is used to identify new documents in the source.
109+
* @param field The field name of the timestamp field used for synchronizing
110+
* @return The {@link Builder} with the field set.
111+
*/
112+
public Builder setField(String field) {
113+
this.field = field;
114+
return this;
115+
}
116+
117+
/**
118+
* The time delay between the current time and the latest input data time.
119+
* The default value is 60s.
120+
* @param delay the delay to use when checking for changes
121+
* @return The {@link Builder} with delay set.
122+
*/
123+
public Builder setDelay(TimeValue delay) {
124+
this.delay = delay;
125+
return this;
126+
}
127+
128+
public TimeSyncConfig build() {
129+
return new TimeSyncConfig(field, delay);
130+
}
131+
}
97132
}

client/rest-high-level/src/test/java/org/elasticsearch/client/TransformIT.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -201,7 +201,7 @@ public void testUpdate() throws IOException {
201201

202202
String id = "test-update";
203203
TransformConfig transform = validDataFrameTransformConfigBuilder(id, sourceIndex, "pivot-dest").setSyncConfig(
204-
new TimeSyncConfig("timefield", TimeValue.timeValueSeconds(60))
204+
TimeSyncConfig.builder().setField("timestamp").setDelay(TimeValue.timeValueSeconds(60)).build()
205205
).build();
206206

207207
TransformClient client = highLevelClient().transform();

client/rest-high-level/src/test/java/org/elasticsearch/client/documentation/TransformDocumentationIT.java

Lines changed: 22 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -34,8 +34,11 @@
3434
import org.elasticsearch.client.transform.transforms.DestConfig;
3535
import org.elasticsearch.client.transform.transforms.NodeAttributes;
3636
import org.elasticsearch.client.transform.transforms.QueryConfig;
37+
import org.elasticsearch.client.transform.transforms.RetentionPolicyConfig;
3738
import org.elasticsearch.client.transform.transforms.SettingsConfig;
3839
import org.elasticsearch.client.transform.transforms.SourceConfig;
40+
import org.elasticsearch.client.transform.transforms.SyncConfig;
41+
import org.elasticsearch.client.transform.transforms.TimeRetentionPolicyConfig;
3942
import org.elasticsearch.client.transform.transforms.TimeSyncConfig;
4043
import org.elasticsearch.client.transform.transforms.TransformConfig;
4144
import org.elasticsearch.client.transform.transforms.TransformConfigUpdate;
@@ -147,6 +150,18 @@ public void testPutTransform() throws IOException, InterruptedException {
147150
.setMaxPageSearchSize(1000) // <1>
148151
.build();
149152
// end::put-transform-settings-config
153+
// tag::put-transform-retention-policy-config
154+
RetentionPolicyConfig retentionPolicy = TimeRetentionPolicyConfig.builder()
155+
.setField("time-field") // <1>
156+
.setMaxAge(TimeValue.timeValueDays(30)) // <2>
157+
.build();
158+
// end::put-transform-retention-policy-config
159+
// tag::put-transform-sync-config
160+
SyncConfig syncConfig = TimeSyncConfig.builder()
161+
.setField("time-field") // <1>
162+
.setDelay(TimeValue.timeValueSeconds(30)) // <2>
163+
.build();
164+
// end::put-transform-sync-config
150165
// tag::put-transform-config
151166
TransformConfig transformConfig = TransformConfig
152167
.builder()
@@ -157,6 +172,8 @@ public void testPutTransform() throws IOException, InterruptedException {
157172
.setPivotConfig(pivotConfig) // <5>
158173
.setDescription("This is my test transform") // <6>
159174
.setSettings(settings) // <7>
175+
.setRetentionPolicyConfig(retentionPolicy) // <8>
176+
.setSyncConfig(syncConfig) // <9>
160177
.build();
161178
// end::put-transform-config
162179

@@ -230,7 +247,7 @@ public void testUpdateTransform() throws IOException, InterruptedException {
230247
.setSource(SourceConfig.builder().setIndex("source-data").setQueryConfig(queryConfig).build())
231248
.setDest(DestConfig.builder().setIndex("pivot-dest").build())
232249
.setPivotConfig(pivotConfig)
233-
.setSyncConfig(new TimeSyncConfig("time-field", TimeValue.timeValueSeconds(120)))
250+
.setSyncConfig(TimeSyncConfig.builder().setField("time-field").setDelay(TimeValue.timeValueSeconds(120)).build())
234251
.build();
235252

236253
client.transform().putTransform(new PutTransformRequest(transformConfig), RequestOptions.DEFAULT);
@@ -246,8 +263,10 @@ public void testUpdateTransform() throws IOException, InterruptedException {
246263
.setIndex("pivot-dest")
247264
.build()) // <2>
248265
.setFrequency(TimeValue.timeValueSeconds(15)) // <3>
249-
.setSyncConfig(new TimeSyncConfig("time-field",
250-
TimeValue.timeValueSeconds(120))) // <4>
266+
.setSyncConfig(TimeSyncConfig.builder()
267+
.setField("time-field")
268+
.setDelay(TimeValue.timeValueSeconds(120))
269+
.build()) // <4>
251270
.setDescription("This is my updated transform") // <5>
252271
.build();
253272
// end::update-transform-config

x-pack/plugin/transform/qa/multi-node-tests/src/javaRestTest/java/org/elasticsearch/xpack/transform/integration/TransformIT.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -135,7 +135,7 @@ public void testContinuousTransformCrud() throws Exception {
135135
TransformConfig config =
136136
createTransformConfigBuilder(transformId, "reviews-by-user-business-day", QueryBuilders.matchAllQuery(), indexName)
137137
.setPivotConfig(createPivotConfig(groups, aggs))
138-
.setSyncConfig(new TimeSyncConfig("timestamp", TimeValue.timeValueSeconds(1)))
138+
.setSyncConfig(TimeSyncConfig.builder().setField("timestamp").setDelay(TimeValue.timeValueSeconds(1)).build())
139139
.build();
140140

141141
assertTrue(putTransform(config, RequestOptions.DEFAULT).isAcknowledged());
@@ -183,7 +183,7 @@ public void testContinuousTransformUpdate() throws Exception {
183183
TransformConfig config =
184184
createTransformConfigBuilder(id, dest, QueryBuilders.matchAllQuery(), indexName)
185185
.setPivotConfig(createPivotConfig(groups, aggs))
186-
.setSyncConfig(new TimeSyncConfig("timestamp", TimeValue.timeValueSeconds(1)))
186+
.setSyncConfig(TimeSyncConfig.builder().setField("timestamp").setDelay(TimeValue.timeValueSeconds(1)).build())
187187
.build();
188188

189189
assertTrue(putTransform(config, RequestOptions.DEFAULT).isAcknowledged());
@@ -269,7 +269,7 @@ public void testStopWaitForCheckpoint() throws Exception {
269269
TransformConfig config =
270270
createTransformConfigBuilder(transformId, "reviews-by-user-business-day", QueryBuilders.matchAllQuery(), indexName)
271271
.setPivotConfig(createPivotConfig(groups, aggs))
272-
.setSyncConfig(new TimeSyncConfig("timestamp", TimeValue.timeValueSeconds(1)))
272+
.setSyncConfig(TimeSyncConfig.builder().setField("timestamp").setDelay(TimeValue.timeValueSeconds(1)).build())
273273
.build();
274274

275275
assertTrue(putTransform(config, RequestOptions.DEFAULT).isAcknowledged());
@@ -335,7 +335,7 @@ public void testContinuousTransformRethrottle() throws Exception {
335335
TransformConfig config =
336336
createTransformConfigBuilder(transformId, "reviews-by-user-business-day", QueryBuilders.matchAllQuery(), indexName)
337337
.setPivotConfig(createPivotConfig(groups, aggs))
338-
.setSyncConfig(new TimeSyncConfig("timestamp", TimeValue.timeValueSeconds(1)))
338+
.setSyncConfig(TimeSyncConfig.builder().setField("timestamp").setDelay(TimeValue.timeValueSeconds(1)).build())
339339
// set requests per second and page size low enough to fail the test if update does not succeed,
340340
.setSettings(SettingsConfig.builder().setRequestsPerSecond(1F).setMaxPageSearchSize(10).build())
341341
.build();

x-pack/plugin/transform/qa/multi-node-tests/src/javaRestTest/java/org/elasticsearch/xpack/transform/integration/continuous/ContinuousTestCase.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -136,6 +136,6 @@ private static class TestRestHighLevelClient extends RestHighLevelClient {
136136
}
137137

138138
private SyncConfig getSyncConfig() {
139-
return new TimeSyncConfig("timestamp", SYNC_DELAY);
139+
return TimeSyncConfig.builder().setField("timestamp").setDelay(SYNC_DELAY).build();
140140
}
141141
}

x-pack/qa/rolling-upgrade/src/test/java/org/elasticsearch/upgrades/TransformSurvivesUpgradeIT.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -176,7 +176,7 @@ private void createAndStartContinuousTransform() throws Exception {
176176
}
177177
long totalDocsWritten = totalDocsWrittenSum;
178178
TransformConfig config = TransformConfig.builder()
179-
.setSyncConfig(new TimeSyncConfig("timestamp", TimeValue.timeValueSeconds(1)))
179+
.setSyncConfig(TimeSyncConfig.builder().setField("timestamp").setDelay(TimeValue.timeValueSeconds(1)).build())
180180
.setPivotConfig(PivotConfig.builder()
181181
.setAggregations(new AggregatorFactories.Builder().addAggregator(AggregationBuilders.avg("stars").field("stars")))
182182
.setGroups(GroupConfig.builder().groupBy("user_id", TermsGroupSource.builder().setField("user_id").build()).build())

0 commit comments

Comments
 (0)