Skip to content

Commit 8072646

Browse files
committed
Merge remote-tracking branch 'elastic/master' into feature/async-eql
2 parents 7f5b727 + bc0eeb4 commit 8072646

File tree

486 files changed

+13032
-6130
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

486 files changed

+13032
-6130
lines changed

client/rest-high-level/src/main/java/org/elasticsearch/client/MLRequestConverters.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -712,6 +712,9 @@ static Request deleteDataFrameAnalytics(DeleteDataFrameAnalyticsRequest deleteRe
712712
if (deleteRequest.getForce() != null) {
713713
params.putParam("force", Boolean.toString(deleteRequest.getForce()));
714714
}
715+
if (deleteRequest.getTimeout() != null) {
716+
params.withTimeout(deleteRequest.getTimeout());
717+
}
715718
request.addParameters(params.asMap());
716719

717720
return request;

client/rest-high-level/src/main/java/org/elasticsearch/client/eql/EqlSearchRequest.java

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ public class EqlSearchRequest implements Validatable, ToXContentObject {
4444
private int fetchSize = 50;
4545
private SearchAfterBuilder searchAfterBuilder;
4646
private String query;
47+
private String tieBreakerField;
4748

4849
// Async settings
4950
private TimeValue waitForCompletionTimeout;
@@ -52,6 +53,7 @@ public class EqlSearchRequest implements Validatable, ToXContentObject {
5253

5354
static final String KEY_FILTER = "filter";
5455
static final String KEY_TIMESTAMP_FIELD = "timestamp_field";
56+
static final String KEY_TIE_BREAKER_FIELD = "tie_breaker_field";
5557
static final String KEY_EVENT_CATEGORY_FIELD = "event_category_field";
5658
static final String KEY_IMPLICIT_JOIN_KEY_FIELD = "implicit_join_key_field";
5759
static final String KEY_SIZE = "size";
@@ -73,6 +75,9 @@ public XContentBuilder toXContent(XContentBuilder builder, ToXContent.Params par
7375
builder.field(KEY_FILTER, filter);
7476
}
7577
builder.field(KEY_TIMESTAMP_FIELD, timestampField());
78+
if (tieBreakerField != null) {
79+
builder.field(KEY_TIE_BREAKER_FIELD, tieBreakerField());
80+
}
7681
builder.field(KEY_EVENT_CATEGORY_FIELD, eventCategoryField());
7782
if (implicitJoinKeyField != null) {
7883
builder.field(KEY_IMPLICIT_JOIN_KEY_FIELD, implicitJoinKeyField());
@@ -123,6 +128,16 @@ public EqlSearchRequest timestampField(String timestampField) {
123128
return this;
124129
}
125130

131+
public String tieBreakerField() {
132+
return this.tieBreakerField;
133+
}
134+
135+
public EqlSearchRequest tieBreakerField(String tieBreakerField) {
136+
Objects.requireNonNull(tieBreakerField, "tie breaker field must not be null");
137+
this.tieBreakerField = tieBreakerField;
138+
return this;
139+
}
140+
126141
public String eventCategoryField() {
127142
return this.eventCategoryField;
128143
}
@@ -222,6 +237,7 @@ public boolean equals(Object o) {
222237
Objects.equals(indicesOptions, that.indicesOptions) &&
223238
Objects.equals(filter, that.filter) &&
224239
Objects.equals(timestampField, that.timestampField) &&
240+
Objects.equals(tieBreakerField, that.tieBreakerField) &&
225241
Objects.equals(eventCategoryField, that.eventCategoryField) &&
226242
Objects.equals(implicitJoinKeyField, that.implicitJoinKeyField) &&
227243
Objects.equals(searchAfterBuilder, that.searchAfterBuilder) &&
@@ -239,6 +255,7 @@ public int hashCode() {
239255
filter,
240256
fetchSize,
241257
timestampField,
258+
tieBreakerField,
242259
eventCategoryField,
243260
implicitJoinKeyField,
244261
searchAfterBuilder,

client/rest-high-level/src/main/java/org/elasticsearch/client/ml/DeleteDataFrameAnalyticsRequest.java

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121

2222
import org.elasticsearch.client.Validatable;
2323
import org.elasticsearch.client.ValidationException;
24+
import org.elasticsearch.common.unit.TimeValue;
2425

2526
import java.util.Objects;
2627
import java.util.Optional;
@@ -32,6 +33,7 @@ public class DeleteDataFrameAnalyticsRequest implements Validatable {
3233

3334
private final String id;
3435
private Boolean force;
36+
private TimeValue timeout;
3537

3638
public DeleteDataFrameAnalyticsRequest(String id) {
3739
this.id = id;
@@ -55,6 +57,19 @@ public void setForce(Boolean force) {
5557
this.force = force;
5658
}
5759

60+
public TimeValue getTimeout() {
61+
return timeout;
62+
}
63+
64+
/**
65+
* Sets the time to wait until the job is deleted.
66+
*
67+
* @param timeout The time to wait until the job is deleted.
68+
*/
69+
public void setTimeout(TimeValue timeout) {
70+
this.timeout = timeout;
71+
}
72+
5873
@Override
5974
public Optional<ValidationException> validate() {
6075
if (id == null) {
@@ -69,11 +84,13 @@ public boolean equals(Object o) {
6984
if (o == null || getClass() != o.getClass()) return false;
7085

7186
DeleteDataFrameAnalyticsRequest other = (DeleteDataFrameAnalyticsRequest) o;
72-
return Objects.equals(id, other.id) && Objects.equals(force, other.force);
87+
return Objects.equals(id, other.id)
88+
&& Objects.equals(force, other.force)
89+
&& Objects.equals(timeout, other.timeout);
7390
}
7491

7592
@Override
7693
public int hashCode() {
77-
return Objects.hash(id, force);
94+
return Objects.hash(id, force, timeout);
7895
}
7996
}

client/rest-high-level/src/main/java/org/elasticsearch/client/ml/GetCategoriesRequest.java

Lines changed: 23 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
import org.elasticsearch.client.Validatable;
2222
import org.elasticsearch.client.core.PageParams;
2323
import org.elasticsearch.client.ml.job.config.Job;
24+
import org.elasticsearch.client.ml.job.results.CategoryDefinition;
2425
import org.elasticsearch.common.ParseField;
2526
import org.elasticsearch.common.xcontent.ConstructingObjectParser;
2627
import org.elasticsearch.common.xcontent.ToXContentObject;
@@ -34,8 +35,8 @@
3435
*/
3536
public class GetCategoriesRequest implements Validatable, ToXContentObject {
3637

37-
38-
public static final ParseField CATEGORY_ID = new ParseField("category_id");
38+
public static final ParseField CATEGORY_ID = CategoryDefinition.CATEGORY_ID;
39+
public static final ParseField PARTITION_FIELD_VALUE = CategoryDefinition.PARTITION_FIELD_VALUE;
3940

4041
public static final ConstructingObjectParser<GetCategoriesRequest, Void> PARSER = new ConstructingObjectParser<>(
4142
"get_categories_request", a -> new GetCategoriesRequest((String) a[0]));
@@ -45,11 +46,13 @@ public class GetCategoriesRequest implements Validatable, ToXContentObject {
4546
PARSER.declareString(ConstructingObjectParser.constructorArg(), Job.ID);
4647
PARSER.declareLong(GetCategoriesRequest::setCategoryId, CATEGORY_ID);
4748
PARSER.declareObject(GetCategoriesRequest::setPageParams, PageParams.PARSER, PageParams.PAGE);
49+
PARSER.declareString(GetCategoriesRequest::setPartitionFieldValue, PARTITION_FIELD_VALUE);
4850
}
4951

5052
private final String jobId;
5153
private Long categoryId;
5254
private PageParams pageParams;
55+
private String partitionFieldValue;
5356

5457
/**
5558
* Constructs a request to retrieve category information from a given job
@@ -87,6 +90,18 @@ public void setPageParams(PageParams pageParams) {
8790
this.pageParams = pageParams;
8891
}
8992

93+
public String getPartitionFieldValue() {
94+
return partitionFieldValue;
95+
}
96+
97+
/**
98+
* Sets the partition field value
99+
* @param partitionFieldValue the partition field value
100+
*/
101+
public void setPartitionFieldValue(String partitionFieldValue) {
102+
this.partitionFieldValue = partitionFieldValue;
103+
}
104+
90105
@Override
91106
public XContentBuilder toXContent(XContentBuilder builder, Params params) throws IOException {
92107
builder.startObject();
@@ -97,6 +112,9 @@ public XContentBuilder toXContent(XContentBuilder builder, Params params) throws
97112
if (pageParams != null) {
98113
builder.field(PageParams.PAGE.getPreferredName(), pageParams);
99114
}
115+
if (partitionFieldValue != null) {
116+
builder.field(PARTITION_FIELD_VALUE.getPreferredName(), partitionFieldValue);
117+
}
100118
builder.endObject();
101119
return builder;
102120
}
@@ -112,11 +130,12 @@ public boolean equals(Object obj) {
112130
GetCategoriesRequest request = (GetCategoriesRequest) obj;
113131
return Objects.equals(jobId, request.jobId)
114132
&& Objects.equals(categoryId, request.categoryId)
115-
&& Objects.equals(pageParams, request.pageParams);
133+
&& Objects.equals(pageParams, request.pageParams)
134+
&& Objects.equals(partitionFieldValue, request.partitionFieldValue);
116135
}
117136

118137
@Override
119138
public int hashCode() {
120-
return Objects.hash(jobId, categoryId, pageParams);
139+
return Objects.hash(jobId, categoryId, pageParams, partitionFieldValue);
121140
}
122141
}

client/rest-high-level/src/main/java/org/elasticsearch/client/ml/job/config/AnalysisConfig.java

Lines changed: 26 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@ public class AnalysisConfig implements ToXContentObject {
5656
public static final ParseField CATEGORIZATION_FIELD_NAME = new ParseField("categorization_field_name");
5757
public static final ParseField CATEGORIZATION_FILTERS = new ParseField("categorization_filters");
5858
public static final ParseField CATEGORIZATION_ANALYZER = CategorizationAnalyzerConfig.CATEGORIZATION_ANALYZER;
59+
public static final ParseField PER_PARTITION_CATEGORIZATION = new ParseField("per_partition_categorization");
5960
public static final ParseField LATENCY = new ParseField("latency");
6061
public static final ParseField SUMMARY_COUNT_FIELD_NAME = new ParseField("summary_count_field_name");
6162
public static final ParseField DETECTORS = new ParseField("detectors");
@@ -78,6 +79,8 @@ public class AnalysisConfig implements ToXContentObject {
7879
PARSER.declareField(Builder::setCategorizationAnalyzerConfig,
7980
(p, c) -> CategorizationAnalyzerConfig.buildFromXContentFragment(p),
8081
CATEGORIZATION_ANALYZER, ObjectParser.ValueType.OBJECT_OR_STRING);
82+
PARSER.declareObject(Builder::setPerPartitionCategorizationConfig, PerPartitionCategorizationConfig.PARSER,
83+
PER_PARTITION_CATEGORIZATION);
8184
PARSER.declareString((builder, val) ->
8285
builder.setLatency(TimeValue.parseTimeValue(val, LATENCY.getPreferredName())), LATENCY);
8386
PARSER.declareString(Builder::setSummaryCountFieldName, SUMMARY_COUNT_FIELD_NAME);
@@ -92,20 +95,23 @@ public class AnalysisConfig implements ToXContentObject {
9295
private final String categorizationFieldName;
9396
private final List<String> categorizationFilters;
9497
private final CategorizationAnalyzerConfig categorizationAnalyzerConfig;
98+
private final PerPartitionCategorizationConfig perPartitionCategorizationConfig;
9599
private final TimeValue latency;
96100
private final String summaryCountFieldName;
97101
private final List<Detector> detectors;
98102
private final List<String> influencers;
99103
private final Boolean multivariateByFields;
100104

101105
private AnalysisConfig(TimeValue bucketSpan, String categorizationFieldName, List<String> categorizationFilters,
102-
CategorizationAnalyzerConfig categorizationAnalyzerConfig, TimeValue latency, String summaryCountFieldName,
103-
List<Detector> detectors, List<String> influencers, Boolean multivariateByFields) {
106+
CategorizationAnalyzerConfig categorizationAnalyzerConfig,
107+
PerPartitionCategorizationConfig perPartitionCategorizationConfig, TimeValue latency,
108+
String summaryCountFieldName, List<Detector> detectors, List<String> influencers, Boolean multivariateByFields) {
104109
this.detectors = Collections.unmodifiableList(detectors);
105110
this.bucketSpan = bucketSpan;
106111
this.latency = latency;
107112
this.categorizationFieldName = categorizationFieldName;
108113
this.categorizationAnalyzerConfig = categorizationAnalyzerConfig;
114+
this.perPartitionCategorizationConfig = perPartitionCategorizationConfig;
109115
this.categorizationFilters = categorizationFilters == null ? null : Collections.unmodifiableList(categorizationFilters);
110116
this.summaryCountFieldName = summaryCountFieldName;
111117
this.influencers = Collections.unmodifiableList(influencers);
@@ -133,6 +139,10 @@ public CategorizationAnalyzerConfig getCategorizationAnalyzerConfig() {
133139
return categorizationAnalyzerConfig;
134140
}
135141

142+
public PerPartitionCategorizationConfig getPerPartitionCategorizationConfig() {
143+
return perPartitionCategorizationConfig;
144+
}
145+
136146
/**
137147
* The latency interval during which out-of-order records should be handled.
138148
*
@@ -226,6 +236,9 @@ public XContentBuilder toXContent(XContentBuilder builder, Params params) throws
226236
// gets written as a single string.
227237
categorizationAnalyzerConfig.toXContent(builder, params);
228238
}
239+
if (perPartitionCategorizationConfig != null) {
240+
builder.field(PER_PARTITION_CATEGORIZATION.getPreferredName(), perPartitionCategorizationConfig);
241+
}
229242
if (latency != null) {
230243
builder.field(LATENCY.getPreferredName(), latency.getStringRep());
231244
}
@@ -261,6 +274,7 @@ public boolean equals(Object object) {
261274
Objects.equals(categorizationFieldName, that.categorizationFieldName) &&
262275
Objects.equals(categorizationFilters, that.categorizationFilters) &&
263276
Objects.equals(categorizationAnalyzerConfig, that.categorizationAnalyzerConfig) &&
277+
Objects.equals(perPartitionCategorizationConfig, that.perPartitionCategorizationConfig) &&
264278
Objects.equals(summaryCountFieldName, that.summaryCountFieldName) &&
265279
Objects.equals(detectors, that.detectors) &&
266280
Objects.equals(influencers, that.influencers) &&
@@ -270,8 +284,8 @@ public boolean equals(Object object) {
270284
@Override
271285
public int hashCode() {
272286
return Objects.hash(
273-
bucketSpan, categorizationFieldName, categorizationFilters, categorizationAnalyzerConfig, latency,
274-
summaryCountFieldName, detectors, influencers, multivariateByFields);
287+
bucketSpan, categorizationFieldName, categorizationFilters, categorizationAnalyzerConfig, perPartitionCategorizationConfig,
288+
latency, summaryCountFieldName, detectors, influencers, multivariateByFields);
275289
}
276290

277291
public static Builder builder(List<Detector> detectors) {
@@ -286,6 +300,7 @@ public static class Builder {
286300
private String categorizationFieldName;
287301
private List<String> categorizationFilters;
288302
private CategorizationAnalyzerConfig categorizationAnalyzerConfig;
303+
private PerPartitionCategorizationConfig perPartitionCategorizationConfig;
289304
private String summaryCountFieldName;
290305
private List<String> influencers = new ArrayList<>();
291306
private Boolean multivariateByFields;
@@ -302,6 +317,7 @@ public Builder(AnalysisConfig analysisConfig) {
302317
this.categorizationFilters = analysisConfig.categorizationFilters == null ? null
303318
: new ArrayList<>(analysisConfig.categorizationFilters);
304319
this.categorizationAnalyzerConfig = analysisConfig.categorizationAnalyzerConfig;
320+
this.perPartitionCategorizationConfig = analysisConfig.perPartitionCategorizationConfig;
305321
this.summaryCountFieldName = analysisConfig.summaryCountFieldName;
306322
this.influencers = new ArrayList<>(analysisConfig.influencers);
307323
this.multivariateByFields = analysisConfig.multivariateByFields;
@@ -351,6 +367,11 @@ public Builder setCategorizationAnalyzerConfig(CategorizationAnalyzerConfig cate
351367
return this;
352368
}
353369

370+
public Builder setPerPartitionCategorizationConfig(PerPartitionCategorizationConfig perPartitionCategorizationConfig) {
371+
this.perPartitionCategorizationConfig = perPartitionCategorizationConfig;
372+
return this;
373+
}
374+
354375
public Builder setSummaryCountFieldName(String summaryCountFieldName) {
355376
this.summaryCountFieldName = summaryCountFieldName;
356377
return this;
@@ -369,7 +390,7 @@ public Builder setMultivariateByFields(Boolean multivariateByFields) {
369390
public AnalysisConfig build() {
370391

371392
return new AnalysisConfig(bucketSpan, categorizationFieldName, categorizationFilters, categorizationAnalyzerConfig,
372-
latency, summaryCountFieldName, detectors, influencers, multivariateByFields);
393+
perPartitionCategorizationConfig, latency, summaryCountFieldName, detectors, influencers, multivariateByFields);
373394
}
374395
}
375396
}

0 commit comments

Comments
 (0)