Skip to content

Commit 42a03a1

Browse files
authored
Merge master and fix conflicts (#53673)
1 parent 475a0ce commit 42a03a1

File tree

411 files changed

+9047
-2136
lines changed

Some content is hidden

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

411 files changed

+9047
-2136
lines changed

.ci/matrix-runtime-javas.yml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77

88
ES_RUNTIME_JAVA:
99
- java11
10-
- openjdk13
1110
- openjdk14
1211
- openjdk15
1312
- zulu11

build.gradle

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -221,8 +221,8 @@ task verifyVersions {
221221
* after the backport of the backcompat code is complete.
222222
*/
223223

224-
boolean bwc_tests_enabled = false
225-
final String bwc_tests_disabled_issue = "https://github.com/elastic/elasticsearch/issues/53477" /* place a PR link here when committing bwc changes */
224+
boolean bwc_tests_enabled = true
225+
final String bwc_tests_disabled_issue = "" /* place a PR link here when committing bwc changes */
226226
if (bwc_tests_enabled == false) {
227227
if (bwc_tests_disabled_issue.isEmpty()) {
228228
throw new GradleException("bwc_tests_disabled_issue must be set when bwc_tests_enabled == false")

buildSrc/src/main/java/org/elasticsearch/gradle/JdkDownloadPlugin.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -143,7 +143,7 @@ private static void setupRootJdkDownload(Project rootProject, Jdk jdk) {
143143
repo.patternLayout(layout -> layout.artifact(artifactPattern));
144144
});
145145
repositories.exclusiveContent(exclusiveContentRepository -> {
146-
exclusiveContentRepository.filter(config -> config.includeGroup(jdk.getVendor()));
146+
exclusiveContentRepository.filter(config -> config.includeGroup(groupName(jdk)));
147147
exclusiveContentRepository.forRepositories(ivyRepo);
148148
});
149149
}
@@ -254,7 +254,11 @@ private static String dependencyNotation(Jdk jdk) {
254254
: jdk.getPlatform();
255255
String extension = jdk.getPlatform().equals("windows") ? "zip" : "tar.gz";
256256

257-
return jdk.getVendor() + ":" + platformDep + ":" + jdk.getBaseVersion() + "@" + extension;
257+
return groupName(jdk) + ":" + platformDep + ":" + jdk.getBaseVersion() + "@" + extension;
258+
}
259+
260+
private static String groupName(Jdk jdk) {
261+
return jdk.getVendor() + "_" + jdk.getMajor();
258262
}
259263

260264
private static String configName(String... parts) {

buildSrc/version.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ jts = 1.15.0
1111
# you should also inspect that version to see if it can be advanced along with
1212
# the com.maxmind.geoip2:geoip2 dependency
1313
jackson = 2.8.11
14-
jacksondatabind = 2.8.11.4
14+
jacksondatabind = 2.8.11.6
1515
snakeyaml = 1.17
1616
icu4j = 62.1
1717
supercsv = 2.4.0

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

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -23,15 +23,18 @@
2323

2424
public class ProxyModeInfo implements RemoteConnectionInfo.ModeInfo {
2525
static final String NAME = "proxy";
26-
static final String ADDRESS = "address";
27-
static final String NUM_SOCKETS_CONNECTED = "num_sockets_connected";
28-
static final String MAX_SOCKET_CONNECTIONS = "max_socket_connections";
26+
static final String PROXY_ADDRESS = "proxy_address";
27+
static final String SERVER_NAME = "server_name";
28+
static final String NUM_PROXY_SOCKETS_CONNECTED = "num_proxy_sockets_connected";
29+
static final String MAX_PROXY_SOCKET_CONNECTIONS = "max_proxy_socket_connections";
2930
private final String address;
31+
private final String serverName;
3032
private final int maxSocketConnections;
3133
private final int numSocketsConnected;
3234

33-
ProxyModeInfo(String address, int maxSocketConnections, int numSocketsConnected) {
35+
ProxyModeInfo(String address, String serverName, int maxSocketConnections, int numSocketsConnected) {
3436
this.address = address;
37+
this.serverName = serverName;
3538
this.maxSocketConnections = maxSocketConnections;
3639
this.numSocketsConnected = numSocketsConnected;
3740
}
@@ -50,6 +53,10 @@ public String getAddress() {
5053
return address;
5154
}
5255

56+
public String getServerName() {
57+
return serverName;
58+
}
59+
5360
public int getMaxSocketConnections() {
5461
return maxSocketConnections;
5562
}
@@ -65,11 +72,12 @@ public boolean equals(Object o) {
6572
ProxyModeInfo otherProxy = (ProxyModeInfo) o;
6673
return maxSocketConnections == otherProxy.maxSocketConnections &&
6774
numSocketsConnected == otherProxy.numSocketsConnected &&
68-
Objects.equals(address, otherProxy.address);
75+
Objects.equals(address, otherProxy.address) &&
76+
Objects.equals(serverName, otherProxy.serverName);
6977
}
7078

7179
@Override
7280
public int hashCode() {
73-
return Objects.hash(address, maxSocketConnections, numSocketsConnected);
81+
return Objects.hash(address, serverName, maxSocketConnections, numSocketsConnected);
7482
}
7583
}

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

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -48,9 +48,9 @@ public final class RemoteConnectionInfo {
4848
String mode = (String) args[1];
4949
ModeInfo modeInfo;
5050
if (mode.equals(ProxyModeInfo.NAME)) {
51-
modeInfo = new ProxyModeInfo((String) args[4], (int) args[5], (int) args[6]);
51+
modeInfo = new ProxyModeInfo((String) args[4], (String) args[5], (int) args[6], (int) args[7]);
5252
} else if (mode.equals(SniffModeInfo.NAME)) {
53-
modeInfo = new SniffModeInfo((List<String>) args[7], (int) args[8], (int) args[9]);
53+
modeInfo = new SniffModeInfo((List<String>) args[8], (int) args[9], (int) args[10]);
5454
} else {
5555
throw new IllegalArgumentException("mode cannot be " + mode);
5656
}
@@ -66,9 +66,10 @@ public final class RemoteConnectionInfo {
6666
PARSER.declareString(constructorArg(), new ParseField(INITIAL_CONNECT_TIMEOUT));
6767
PARSER.declareBoolean(constructorArg(), new ParseField(SKIP_UNAVAILABLE));
6868

69-
PARSER.declareString(optionalConstructorArg(), new ParseField(ProxyModeInfo.ADDRESS));
70-
PARSER.declareInt(optionalConstructorArg(), new ParseField(ProxyModeInfo.MAX_SOCKET_CONNECTIONS));
71-
PARSER.declareInt(optionalConstructorArg(), new ParseField(ProxyModeInfo.NUM_SOCKETS_CONNECTED));
69+
PARSER.declareString(optionalConstructorArg(), new ParseField(ProxyModeInfo.PROXY_ADDRESS));
70+
PARSER.declareString(optionalConstructorArg(), new ParseField(ProxyModeInfo.SERVER_NAME));
71+
PARSER.declareInt(optionalConstructorArg(), new ParseField(ProxyModeInfo.MAX_PROXY_SOCKET_CONNECTIONS));
72+
PARSER.declareInt(optionalConstructorArg(), new ParseField(ProxyModeInfo.NUM_PROXY_SOCKETS_CONNECTED));
7273

7374
PARSER.declareStringArray(optionalConstructorArg(), new ParseField(SniffModeInfo.SEEDS));
7475
PARSER.declareInt(optionalConstructorArg(), new ParseField(SniffModeInfo.MAX_CONNECTIONS_PER_CLUSTER));

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

Lines changed: 46 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -22,10 +22,12 @@
2222
import org.elasticsearch.common.ParseField;
2323
import org.elasticsearch.common.Strings;
2424
import org.elasticsearch.common.xcontent.ConstructingObjectParser;
25+
import org.elasticsearch.common.xcontent.ObjectParser;
2526
import org.elasticsearch.common.xcontent.XContentBuilder;
2627
import org.elasticsearch.common.xcontent.XContentParser;
2728

2829
import java.io.IOException;
30+
import java.util.Locale;
2931
import java.util.Objects;
3032

3133
public class Classification implements DataFrameAnalysis {
@@ -49,6 +51,7 @@ public static Builder builder(String dependentVariable) {
4951
static final ParseField NUM_TOP_FEATURE_IMPORTANCE_VALUES = new ParseField("num_top_feature_importance_values");
5052
static final ParseField PREDICTION_FIELD_NAME = new ParseField("prediction_field_name");
5153
static final ParseField TRAINING_PERCENT = new ParseField("training_percent");
54+
static final ParseField CLASS_ASSIGNMENT_OBJECTIVE = new ParseField("class_assignment_objective");
5255
static final ParseField NUM_TOP_CLASSES = new ParseField("num_top_classes");
5356
static final ParseField RANDOMIZE_SEED = new ParseField("randomize_seed");
5457

@@ -67,7 +70,8 @@ public static Builder builder(String dependentVariable) {
6770
(String) a[7],
6871
(Double) a[8],
6972
(Integer) a[9],
70-
(Long) a[10]));
73+
(Long) a[10],
74+
(ClassAssignmentObjective) a[11]));
7175

7276
static {
7377
PARSER.declareString(ConstructingObjectParser.constructorArg(), DEPENDENT_VARIABLE);
@@ -81,6 +85,12 @@ public static Builder builder(String dependentVariable) {
8185
PARSER.declareDouble(ConstructingObjectParser.optionalConstructorArg(), TRAINING_PERCENT);
8286
PARSER.declareInt(ConstructingObjectParser.optionalConstructorArg(), NUM_TOP_CLASSES);
8387
PARSER.declareLong(ConstructingObjectParser.optionalConstructorArg(), RANDOMIZE_SEED);
88+
PARSER.declareField(ConstructingObjectParser.optionalConstructorArg(), p -> {
89+
if (p.currentToken() == XContentParser.Token.VALUE_STRING) {
90+
return ClassAssignmentObjective.fromString(p.text());
91+
}
92+
throw new IllegalArgumentException("Unsupported token [" + p.currentToken() + "]");
93+
}, CLASS_ASSIGNMENT_OBJECTIVE, ObjectParser.ValueType.STRING);
8494
}
8595

8696
private final String dependentVariable;
@@ -92,13 +102,15 @@ public static Builder builder(String dependentVariable) {
92102
private final Integer numTopFeatureImportanceValues;
93103
private final String predictionFieldName;
94104
private final Double trainingPercent;
105+
private final ClassAssignmentObjective classAssignmentObjective;
95106
private final Integer numTopClasses;
96107
private final Long randomizeSeed;
97108

98109
private Classification(String dependentVariable, @Nullable Double lambda, @Nullable Double gamma, @Nullable Double eta,
99110
@Nullable Integer maxTrees, @Nullable Double featureBagFraction,
100111
@Nullable Integer numTopFeatureImportanceValues, @Nullable String predictionFieldName,
101-
@Nullable Double trainingPercent, @Nullable Integer numTopClasses, @Nullable Long randomizeSeed) {
112+
@Nullable Double trainingPercent, @Nullable Integer numTopClasses, @Nullable Long randomizeSeed,
113+
@Nullable ClassAssignmentObjective classAssignmentObjective) {
102114
this.dependentVariable = Objects.requireNonNull(dependentVariable);
103115
this.lambda = lambda;
104116
this.gamma = gamma;
@@ -108,6 +120,7 @@ private Classification(String dependentVariable, @Nullable Double lambda, @Nulla
108120
this.numTopFeatureImportanceValues = numTopFeatureImportanceValues;
109121
this.predictionFieldName = predictionFieldName;
110122
this.trainingPercent = trainingPercent;
123+
this.classAssignmentObjective = classAssignmentObjective;
111124
this.numTopClasses = numTopClasses;
112125
this.randomizeSeed = randomizeSeed;
113126
}
@@ -157,6 +170,10 @@ public Long getRandomizeSeed() {
157170
return randomizeSeed;
158171
}
159172

173+
public ClassAssignmentObjective getClassAssignmentObjective() {
174+
return classAssignmentObjective;
175+
}
176+
160177
public Integer getNumTopClasses() {
161178
return numTopClasses;
162179
}
@@ -192,6 +209,9 @@ public XContentBuilder toXContent(XContentBuilder builder, Params params) throws
192209
if (randomizeSeed != null) {
193210
builder.field(RANDOMIZE_SEED.getPreferredName(), randomizeSeed);
194211
}
212+
if (classAssignmentObjective != null) {
213+
builder.field(CLASS_ASSIGNMENT_OBJECTIVE.getPreferredName(), classAssignmentObjective);
214+
}
195215
if (numTopClasses != null) {
196216
builder.field(NUM_TOP_CLASSES.getPreferredName(), numTopClasses);
197217
}
@@ -202,7 +222,7 @@ public XContentBuilder toXContent(XContentBuilder builder, Params params) throws
202222
@Override
203223
public int hashCode() {
204224
return Objects.hash(dependentVariable, lambda, gamma, eta, maxTrees, featureBagFraction, numTopFeatureImportanceValues,
205-
predictionFieldName, trainingPercent, randomizeSeed, numTopClasses);
225+
predictionFieldName, trainingPercent, randomizeSeed, numTopClasses, classAssignmentObjective);
206226
}
207227

208228
@Override
@@ -220,14 +240,28 @@ public boolean equals(Object o) {
220240
&& Objects.equals(predictionFieldName, that.predictionFieldName)
221241
&& Objects.equals(trainingPercent, that.trainingPercent)
222242
&& Objects.equals(randomizeSeed, that.randomizeSeed)
223-
&& Objects.equals(numTopClasses, that.numTopClasses);
243+
&& Objects.equals(numTopClasses, that.numTopClasses)
244+
&& Objects.equals(classAssignmentObjective, that.classAssignmentObjective);
224245
}
225246

226247
@Override
227248
public String toString() {
228249
return Strings.toString(this);
229250
}
230251

252+
public enum ClassAssignmentObjective {
253+
MAXIMIZE_ACCURACY, MAXIMIZE_MINIMUM_RECALL;
254+
255+
public static ClassAssignmentObjective fromString(String value) {
256+
return ClassAssignmentObjective.valueOf(value.toUpperCase(Locale.ROOT));
257+
}
258+
259+
@Override
260+
public String toString() {
261+
return name().toLowerCase(Locale.ROOT);
262+
}
263+
}
264+
231265
public static class Builder {
232266
private String dependentVariable;
233267
private Double lambda;
@@ -240,6 +274,7 @@ public static class Builder {
240274
private Double trainingPercent;
241275
private Integer numTopClasses;
242276
private Long randomizeSeed;
277+
private ClassAssignmentObjective classAssignmentObjective;
243278

244279
private Builder(String dependentVariable) {
245280
this.dependentVariable = Objects.requireNonNull(dependentVariable);
@@ -295,9 +330,15 @@ public Builder setNumTopClasses(Integer numTopClasses) {
295330
return this;
296331
}
297332

333+
public Builder setClassAssignmentObjective(ClassAssignmentObjective classAssignmentObjective) {
334+
this.classAssignmentObjective = classAssignmentObjective;
335+
return this;
336+
}
337+
298338
public Classification build() {
299339
return new Classification(dependentVariable, lambda, gamma, eta, maxTrees, featureBagFraction,
300-
numTopFeatureImportanceValues, predictionFieldName, trainingPercent, numTopClasses, randomizeSeed);
340+
numTopFeatureImportanceValues, predictionFieldName, trainingPercent, numTopClasses, randomizeSeed,
341+
classAssignmentObjective);
301342
}
302343
}
303344
}

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

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -43,9 +43,8 @@ public class TrainedModelDefinition implements ToXContentObject {
4343
true,
4444
TrainedModelDefinition.Builder::new);
4545
static {
46-
PARSER.declareNamedObjects(TrainedModelDefinition.Builder::setTrainedModel,
46+
PARSER.declareNamedObject(TrainedModelDefinition.Builder::setTrainedModel,
4747
(p, c, n) -> p.namedObject(TrainedModel.class, n, null),
48-
(modelDocBuilder) -> { /* Noop does not matter client side*/ },
4948
TRAINED_MODEL);
5049
PARSER.declareNamedObjects(TrainedModelDefinition.Builder::setPreProcessors,
5150
(p, c, n) -> p.namedObject(PreProcessor.class, n, null),
@@ -124,11 +123,6 @@ public Builder setTrainedModel(TrainedModel trainedModel) {
124123
return this;
125124
}
126125

127-
private Builder setTrainedModel(List<TrainedModel> trainedModel) {
128-
assert trainedModel.size() == 1;
129-
return setTrainedModel(trainedModel.get(0));
130-
}
131-
132126
public TrainedModelDefinition build() {
133127
return new TrainedModelDefinition(this.trainedModel, this.preProcessors);
134128
}

client/rest-high-level/src/main/java/org/elasticsearch/client/ml/inference/trainedmodel/ensemble/Ensemble.java

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -56,9 +56,8 @@ public class Ensemble implements TrainedModel {
5656
p.namedObject(TrainedModel.class, n, null),
5757
(ensembleBuilder) -> { /* Noop does not matter client side */ },
5858
TRAINED_MODELS);
59-
PARSER.declareNamedObjects(Ensemble.Builder::setOutputAggregatorFromParser,
59+
PARSER.declareNamedObject(Ensemble.Builder::setOutputAggregator,
6060
(p, c, n) -> p.namedObject(OutputAggregator.class, n, null),
61-
(ensembleBuilder) -> { /* Noop does not matter client side */ },
6261
AGGREGATE_OUTPUT);
6362
PARSER.declareString(Ensemble.Builder::setTargetType, TARGET_TYPE);
6463
PARSER.declareStringArray(Ensemble.Builder::setClassificationLabels, CLASSIFICATION_LABELS);
@@ -194,9 +193,6 @@ public Builder setClassificationWeights(List<Double> classificationWeights) {
194193
return this;
195194
}
196195

197-
private void setOutputAggregatorFromParser(List<OutputAggregator> outputAggregators) {
198-
this.setOutputAggregator(outputAggregators.get(0));
199-
}
200196

201197
private void setTargetType(String targetType) {
202198
this.targetType = TargetType.fromString(targetType);

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

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1336,6 +1336,8 @@ public void testPutDataFrameAnalyticsConfig_GivenClassification() throws Excepti
13361336
.setPredictionFieldName("my_dependent_variable_prediction")
13371337
.setTrainingPercent(80.0)
13381338
.setRandomizeSeed(42L)
1339+
.setClassAssignmentObjective(
1340+
org.elasticsearch.client.ml.dataframe.Classification.ClassAssignmentObjective.MAXIMIZE_ACCURACY)
13391341
.setNumTopClasses(1)
13401342
.setLambda(1.0)
13411343
.setGamma(1.0)
@@ -2265,7 +2267,7 @@ public void testGetTrainedModelsStats() throws Exception {
22652267
" \"target_field\": \"regression_value\",\n" +
22662268
" \"model_id\": \"" + modelIdPrefix + 0 + "\",\n" +
22672269
" \"inference_config\": {\"regression\": {}},\n" +
2268-
" \"field_mappings\": {\n" +
2270+
" \"field_map\": {\n" +
22692271
" \"col1\": \"col1\",\n" +
22702272
" \"col2\": \"col2\",\n" +
22712273
" \"col3\": \"col3\",\n" +

0 commit comments

Comments
 (0)