Skip to content

Commit f736205

Browse files
committed
Merge branch 'master' into ccr
* master: [ML] Rate limit established model memory updates (#31768) [Docs] Correct default window_size (#31582) S3 fixture should report 404 on unknown bucket (#31782) Detach Transport from TransportService (#31727) [ML] Limit ML filter items to 10K (#31731) [ML] Return statistics about forecasts as part of the jobsstats and usage API (#31647) Fixture for Minio testing (#31688) [DOCS] Add missing get mappings docs to HLRC (#31765) [DOCS] Starting Elasticsearch (#31701) Painless: Complete Removal of Painless Type (#31699) Fix not waiting for Netty ThreadDeathWatcher in IT (#31758) Consolidate watcher setting update registration (#31762) Build: re-enabled bwc (#31769) ingest: Introduction of a bytes processor (#31733) Fix coerce validation_method in GeoBoundingBoxQueryBuilder (#31747) Add analyze API to high-level rest client (#31577) [DOCS] Typos DOC: Add examples to the SQL docs (#31633) Add support for AWS session tokens (#30414) Watcher: Reenable start/stop yaml tests (#31754) Implemented XContent serialisation for GetIndexResponse (#31675) JDBC: Fix stackoverflow on getObject and timestamp conversion (#31735) resolveHasher defaults to NOOP (#31723) Account for XContent overhead in in-flight breaker Split CircuitBreaker-related tests (#31659) Add write*Blob option to replace existing blob (#31729) Painless: Add Context Docs (#31190) Watcher: Fix chain input toXcontent serialization (#31721) Docs: Match the examples in the description (#31710) rest-high-level: added get cluster settings (#31706) [Docs] Correct typos (#31720) Clean up double semicolon code typos (#31687) [DOCS] Check for Windows and *nix file paths (#31648) [ML] Validate ML filter_id (#31535) Revert long lines Fix TransportChangePasswordActionTests
2 parents ac654cb + 308e37f commit f736205

File tree

291 files changed

+8734
-2541
lines changed

Some content is hidden

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

291 files changed

+8734
-2541
lines changed

build.gradle

+1-1
Original file line numberDiff line numberDiff line change
@@ -171,7 +171,7 @@ task verifyVersions {
171171
* after the backport of the backcompat code is complete.
172172
*/
173173
final boolean bwc_tests_enabled = true
174-
final String bwc_tests_disabled_issue = "" /* place a PR link here when commiting bwc changes */
174+
final String bwc_tests_disabled_issue = "" /* place a PR link here when committing bwc changes */
175175
if (bwc_tests_enabled == false) {
176176
if (bwc_tests_disabled_issue.isEmpty()) {
177177
throw new GradleException("bwc_tests_disabled_issue must be set when bwc_tests_enabled == false")

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

+31
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,8 @@
2222
import org.elasticsearch.action.ActionListener;
2323
import org.elasticsearch.action.admin.cluster.health.ClusterHealthRequest;
2424
import org.elasticsearch.action.admin.cluster.health.ClusterHealthResponse;
25+
import org.elasticsearch.action.admin.cluster.settings.ClusterGetSettingsRequest;
26+
import org.elasticsearch.action.admin.cluster.settings.ClusterGetSettingsResponse;
2527
import org.elasticsearch.action.admin.cluster.settings.ClusterUpdateSettingsRequest;
2628
import org.elasticsearch.action.admin.cluster.settings.ClusterUpdateSettingsResponse;
2729
import org.elasticsearch.rest.RestStatus;
@@ -72,6 +74,35 @@ public void putSettingsAsync(ClusterUpdateSettingsRequest clusterUpdateSettingsR
7274
options, ClusterUpdateSettingsResponse::fromXContent, listener, emptySet());
7375
}
7476

77+
/**
78+
* Get the cluster wide settings using the Cluster Get Settings API.
79+
* See <a href="https://www.elastic.co/guide/en/elasticsearch/reference/current/cluster-get-settings.html"> Cluster Get Settings
80+
* API on elastic.co</a>
81+
* @param clusterGetSettingsRequest the request
82+
* @param options the request options (e.g. headers), use {@link RequestOptions#DEFAULT} if nothing needs to be customized
83+
* @return the response
84+
* @throws IOException in case there is a problem sending the request or parsing back the response
85+
*/
86+
public ClusterGetSettingsResponse getSettings(ClusterGetSettingsRequest clusterGetSettingsRequest, RequestOptions options)
87+
throws IOException {
88+
return restHighLevelClient.performRequestAndParseEntity(clusterGetSettingsRequest, RequestConverters::clusterGetSettings,
89+
options, ClusterGetSettingsResponse::fromXContent, emptySet());
90+
}
91+
92+
/**
93+
* Asynchronously get the cluster wide settings using the Cluster Get Settings API.
94+
* See <a href="https://www.elastic.co/guide/en/elasticsearch/reference/current/cluster-get-settings.html"> Cluster Get Settings
95+
* API on elastic.co</a>
96+
* @param clusterGetSettingsRequest the request
97+
* @param options the request options (e.g. headers), use {@link RequestOptions#DEFAULT} if nothing needs to be customized
98+
* @param listener the listener to be notified upon request completion
99+
*/
100+
public void getSettingsAsync(ClusterGetSettingsRequest clusterGetSettingsRequest, RequestOptions options,
101+
ActionListener<ClusterGetSettingsResponse> listener) {
102+
restHighLevelClient.performRequestAsyncAndParseEntity(clusterGetSettingsRequest, RequestConverters::clusterGetSettings,
103+
options, ClusterGetSettingsResponse::fromXContent, listener, emptySet());
104+
}
105+
75106
/**
76107
* Get cluster health using the Cluster Health API.
77108
* See

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

+30
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,8 @@
2323
import org.elasticsearch.action.admin.indices.alias.IndicesAliasesRequest;
2424
import org.elasticsearch.action.admin.indices.alias.IndicesAliasesResponse;
2525
import org.elasticsearch.action.admin.indices.alias.get.GetAliasesRequest;
26+
import org.elasticsearch.action.admin.indices.analyze.AnalyzeRequest;
27+
import org.elasticsearch.action.admin.indices.analyze.AnalyzeResponse;
2628
import org.elasticsearch.action.admin.indices.cache.clear.ClearIndicesCacheRequest;
2729
import org.elasticsearch.action.admin.indices.cache.clear.ClearIndicesCacheResponse;
2830
import org.elasticsearch.action.admin.indices.close.CloseIndexRequest;
@@ -752,4 +754,32 @@ public void getTemplateAsync(GetIndexTemplatesRequest getIndexTemplatesRequest,
752754
restHighLevelClient.performRequestAsyncAndParseEntity(getIndexTemplatesRequest, RequestConverters::getTemplates,
753755
options, GetIndexTemplatesResponse::fromXContent, listener, emptySet());
754756
}
757+
758+
/**
759+
* Calls the analyze API
760+
*
761+
* See <a href="https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-analyze.html">Analyze API on elastic.co</a>
762+
*
763+
* @param request the request
764+
* @param options the request options (e.g. headers), use {@link RequestOptions#DEFAULT} if nothing needs to be customized
765+
*/
766+
public AnalyzeResponse analyze(AnalyzeRequest request, RequestOptions options) throws IOException {
767+
return restHighLevelClient.performRequestAndParseEntity(request, RequestConverters::analyze, options,
768+
AnalyzeResponse::fromXContent, emptySet());
769+
}
770+
771+
/**
772+
* Asynchronously calls the analyze API
773+
*
774+
* See <a href="https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-analyze.html">Analyze API on elastic.co</a>
775+
*
776+
* @param request the request
777+
* @param options the request options (e.g. headers), use {@link RequestOptions#DEFAULT} if nothing needs to be customized
778+
* @param listener the listener to be notified upon request completion
779+
*/
780+
public void analyzeAsync(AnalyzeRequest request, RequestOptions options,
781+
ActionListener<AnalyzeResponse> listener) {
782+
restHighLevelClient.performRequestAsyncAndParseEntity(request, RequestConverters::analyze, options,
783+
AnalyzeResponse::fromXContent, listener, emptySet());
784+
}
755785
}

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

+27-2
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@
3636
import org.elasticsearch.action.admin.cluster.repositories.get.GetRepositoriesRequest;
3737
import org.elasticsearch.action.admin.cluster.repositories.put.PutRepositoryRequest;
3838
import org.elasticsearch.action.admin.cluster.repositories.verify.VerifyRepositoryRequest;
39+
import org.elasticsearch.action.admin.cluster.settings.ClusterGetSettingsRequest;
3940
import org.elasticsearch.action.admin.cluster.settings.ClusterUpdateSettingsRequest;
4041
import org.elasticsearch.action.admin.cluster.snapshots.create.CreateSnapshotRequest;
4142
import org.elasticsearch.action.admin.cluster.snapshots.get.GetSnapshotsRequest;
@@ -44,6 +45,7 @@
4445
import org.elasticsearch.action.admin.cluster.snapshots.delete.DeleteSnapshotRequest;
4546
import org.elasticsearch.action.admin.indices.alias.IndicesAliasesRequest;
4647
import org.elasticsearch.action.admin.indices.alias.get.GetAliasesRequest;
48+
import org.elasticsearch.action.admin.indices.analyze.AnalyzeRequest;
4749
import org.elasticsearch.action.admin.indices.cache.clear.ClearIndicesCacheRequest;
4850
import org.elasticsearch.action.admin.indices.close.CloseIndexRequest;
4951
import org.elasticsearch.action.admin.indices.create.CreateIndexRequest;
@@ -605,7 +607,7 @@ static Request searchTemplate(SearchTemplateRequest searchTemplateRequest) throw
605607
request.setEntity(createEntity(searchTemplateRequest, REQUEST_BODY_CONTENT_TYPE));
606608
return request;
607609
}
608-
610+
609611
static Request multiSearchTemplate(MultiSearchTemplateRequest multiSearchTemplateRequest) throws IOException {
610612
Request request = new Request(HttpPost.METHOD_NAME, "/_msearch/template");
611613

@@ -619,7 +621,7 @@ static Request multiSearchTemplate(MultiSearchTemplateRequest multiSearchTemplat
619621
byte[] source = MultiSearchTemplateRequest.writeMultiLineFormat(multiSearchTemplateRequest, xContent);
620622
request.setEntity(new ByteArrayEntity(source, createContentType(xContent.type())));
621623
return request;
622-
}
624+
}
623625

624626
static Request existsAlias(GetAliasesRequest getAliasesRequest) {
625627
if ((getAliasesRequest.indices() == null || getAliasesRequest.indices().length == 0) &&
@@ -709,6 +711,17 @@ static Request clusterPutSettings(ClusterUpdateSettingsRequest clusterUpdateSett
709711
return request;
710712
}
711713

714+
static Request clusterGetSettings(ClusterGetSettingsRequest clusterGetSettingsRequest) throws IOException {
715+
Request request = new Request(HttpGet.METHOD_NAME, "/_cluster/settings");
716+
717+
Params parameters = new Params(request);
718+
parameters.withLocal(clusterGetSettingsRequest.local());
719+
parameters.withIncludeDefaults(clusterGetSettingsRequest.includeDefaults());
720+
parameters.withMasterTimeout(clusterGetSettingsRequest.masterNodeTimeout());
721+
722+
return request;
723+
}
724+
712725
static Request getPipeline(GetPipelineRequest getPipelineRequest) {
713726
String endpoint = new EndpointBuilder()
714727
.addPathPartAsIs("_ingest/pipeline")
@@ -1007,6 +1020,18 @@ static Request getTemplates(GetIndexTemplatesRequest getIndexTemplatesRequest) t
10071020
return request;
10081021
}
10091022

1023+
static Request analyze(AnalyzeRequest request) throws IOException {
1024+
EndpointBuilder builder = new EndpointBuilder();
1025+
String index = request.index();
1026+
if (index != null) {
1027+
builder.addPathPart(index);
1028+
}
1029+
builder.addPathPartAsIs("_analyze");
1030+
Request req = new Request(HttpGet.METHOD_NAME, builder.build());
1031+
req.setEntity(createEntity(request, REQUEST_BODY_CONTENT_TYPE));
1032+
return req;
1033+
}
1034+
10101035
static Request getScript(GetStoredScriptRequest getStoredScriptRequest) {
10111036
String endpoint = new EndpointBuilder().addPathPartAsIs("_scripts").addPathPart(getStoredScriptRequest.id()).build();
10121037
Request request = new Request(HttpGet.METHOD_NAME, endpoint);

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

+43
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,8 @@
2222
import org.elasticsearch.ElasticsearchException;
2323
import org.elasticsearch.action.admin.cluster.health.ClusterHealthRequest;
2424
import org.elasticsearch.action.admin.cluster.health.ClusterHealthResponse;
25+
import org.elasticsearch.action.admin.cluster.settings.ClusterGetSettingsRequest;
26+
import org.elasticsearch.action.admin.cluster.settings.ClusterGetSettingsResponse;
2527
import org.elasticsearch.action.admin.cluster.settings.ClusterUpdateSettingsRequest;
2628
import org.elasticsearch.action.admin.cluster.settings.ClusterUpdateSettingsResponse;
2729
import org.elasticsearch.cluster.health.ClusterHealthStatus;
@@ -42,6 +44,7 @@
4244
import static java.util.Collections.emptyMap;
4345
import static org.elasticsearch.test.hamcrest.ElasticsearchAssertions.assertAcked;
4446
import static org.hamcrest.Matchers.equalTo;
47+
import static org.hamcrest.Matchers.greaterThan;
4548
import static org.hamcrest.Matchers.notNullValue;
4649
import static org.hamcrest.Matchers.nullValue;
4750

@@ -112,6 +115,46 @@ public void testClusterUpdateSettingNonExistent() {
112115
"Elasticsearch exception [type=illegal_argument_exception, reason=transient setting [" + setting + "], not recognized]"));
113116
}
114117

118+
public void testClusterGetSettings() throws IOException {
119+
final String transientSettingKey = RecoverySettings.INDICES_RECOVERY_MAX_BYTES_PER_SEC_SETTING.getKey();
120+
final int transientSettingValue = 10;
121+
122+
final String persistentSettingKey = EnableAllocationDecider.CLUSTER_ROUTING_ALLOCATION_ENABLE_SETTING.getKey();
123+
final String persistentSettingValue = EnableAllocationDecider.Allocation.NONE.name();
124+
125+
Settings transientSettings =
126+
Settings.builder().put(transientSettingKey, transientSettingValue, ByteSizeUnit.BYTES).build();
127+
Settings persistentSettings = Settings.builder().put(persistentSettingKey, persistentSettingValue).build();
128+
clusterUpdateSettings(persistentSettings, transientSettings);
129+
130+
ClusterGetSettingsRequest request = new ClusterGetSettingsRequest();
131+
ClusterGetSettingsResponse response = execute(
132+
request, highLevelClient().cluster()::getSettings, highLevelClient().cluster()::getSettingsAsync);
133+
assertEquals(persistentSettings, response.getPersistentSettings());
134+
assertEquals(transientSettings, response.getTransientSettings());
135+
assertEquals(0, response.getDefaultSettings().size());
136+
}
137+
138+
public void testClusterGetSettingsWithDefault() throws IOException {
139+
final String transientSettingKey = RecoverySettings.INDICES_RECOVERY_MAX_BYTES_PER_SEC_SETTING.getKey();
140+
final int transientSettingValue = 10;
141+
142+
final String persistentSettingKey = EnableAllocationDecider.CLUSTER_ROUTING_ALLOCATION_ENABLE_SETTING.getKey();
143+
final String persistentSettingValue = EnableAllocationDecider.Allocation.NONE.name();
144+
145+
Settings transientSettings =
146+
Settings.builder().put(transientSettingKey, transientSettingValue, ByteSizeUnit.BYTES).build();
147+
Settings persistentSettings = Settings.builder().put(persistentSettingKey, persistentSettingValue).build();
148+
clusterUpdateSettings(persistentSettings, transientSettings);
149+
150+
ClusterGetSettingsRequest request = new ClusterGetSettingsRequest().includeDefaults(true);
151+
ClusterGetSettingsResponse response = execute(
152+
request, highLevelClient().cluster()::getSettings, highLevelClient().cluster()::getSettingsAsync);
153+
assertEquals(persistentSettings, response.getPersistentSettings());
154+
assertEquals(transientSettings, response.getTransientSettings());
155+
assertThat(response.getDefaultSettings().size(), greaterThan(0));
156+
}
157+
115158
public void testClusterHealthGreen() throws IOException {
116159
ClusterHealthRequest request = new ClusterHealthRequest();
117160
request.timeout("5s");

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

+10
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,11 @@
2020
package org.elasticsearch.client;
2121

2222
import org.elasticsearch.action.ActionListener;
23+
import org.elasticsearch.action.admin.cluster.settings.ClusterUpdateSettingsRequest;
2324
import org.elasticsearch.action.ingest.PutPipelineRequest;
2425
import org.elasticsearch.action.support.PlainActionFuture;
2526
import org.elasticsearch.common.bytes.BytesReference;
27+
import org.elasticsearch.common.settings.Settings;
2628
import org.elasticsearch.common.xcontent.XContentBuilder;
2729
import org.elasticsearch.common.xcontent.XContentType;
2830
import org.elasticsearch.ingest.Pipeline;
@@ -126,4 +128,12 @@ protected static void createPipeline(String pipelineId) throws IOException {
126128
protected static void createPipeline(PutPipelineRequest putPipelineRequest) throws IOException {
127129
assertOK(client().performRequest(RequestConverters.putPipeline(putPipelineRequest)));
128130
}
131+
132+
protected static void clusterUpdateSettings(Settings persistentSettings,
133+
Settings transientSettings) throws IOException {
134+
ClusterUpdateSettingsRequest request = new ClusterUpdateSettingsRequest();
135+
request.persistentSettings(persistentSettings);
136+
request.transientSettings(transientSettings);
137+
assertOK(client().performRequest(RequestConverters.clusterPutSettings(request)));
138+
}
129139
}

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

+1-1
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ private static Map<String, Set<AliasMetaData>> createIndicesAliasesMap(int min,
5959
return map;
6060
}
6161

62-
private static AliasMetaData createAliasMetaData() {
62+
public static AliasMetaData createAliasMetaData() {
6363
AliasMetaData.Builder builder = AliasMetaData.builder(randomAlphaOfLengthBetween(3, 10));
6464
if (randomBoolean()) {
6565
builder.routing(randomAlphaOfLengthBetween(3, 10));

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

+18
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,8 @@
2929
import org.elasticsearch.action.admin.indices.alias.IndicesAliasesRequest.AliasActions;
3030
import org.elasticsearch.action.admin.indices.alias.IndicesAliasesResponse;
3131
import org.elasticsearch.action.admin.indices.alias.get.GetAliasesRequest;
32+
import org.elasticsearch.action.admin.indices.analyze.AnalyzeRequest;
33+
import org.elasticsearch.action.admin.indices.analyze.AnalyzeResponse;
3234
import org.elasticsearch.action.admin.indices.cache.clear.ClearIndicesCacheRequest;
3335
import org.elasticsearch.action.admin.indices.cache.clear.ClearIndicesCacheResponse;
3436
import org.elasticsearch.action.admin.indices.close.CloseIndexRequest;
@@ -1278,4 +1280,20 @@ public void testGetIndexTemplate() throws Exception {
12781280
new GetIndexTemplatesRequest().names("the-template-*"), client.indices()::getTemplate, client.indices()::getTemplateAsync));
12791281
assertThat(notFound.status(), equalTo(RestStatus.NOT_FOUND));
12801282
}
1283+
1284+
public void testAnalyze() throws Exception {
1285+
1286+
RestHighLevelClient client = highLevelClient();
1287+
1288+
AnalyzeRequest noindexRequest = new AnalyzeRequest().text("One two three").analyzer("english");
1289+
AnalyzeResponse noindexResponse = execute(noindexRequest, client.indices()::analyze, client.indices()::analyzeAsync);
1290+
1291+
assertThat(noindexResponse.getTokens(), hasSize(3));
1292+
1293+
AnalyzeRequest detailsRequest = new AnalyzeRequest().text("One two three").analyzer("english").explain(true);
1294+
AnalyzeResponse detailsResponse = execute(detailsRequest, client.indices()::analyze, client.indices()::analyzeAsync);
1295+
1296+
assertNotNull(detailsResponse.detail());
1297+
1298+
}
12811299
}

0 commit comments

Comments
 (0)