Skip to content

Commit a98e8f7

Browse files
committed
Merge branch '6.x' into ccr-6.x
* 6.x: Adjust BWC version on client features Introduce client feature tracking (#31020) [DOCS] Make geoshape docs less memory hungry (#31014) Fix handling of percent-encoded spaces in Windows batch files (#31034) [Docs] Fix a typo in Create Index naming limitation (#30891) REST high-level client: add delete ingest pipeline API (#30865) Ensure that index_prefixes settings cannot be changed (#30967) REST high-level client: add get ingest pipeline API (#30847) Cross Cluster Search: preserve remote status code (#30976) High-level client: list tasks failure to not lose nodeId (#31001) Refactor Sniffer and make it testable (#29638) [ML][TEST] Fix bucket count assertion in all tests in ModelPlotsIT (#31026) Add an option to split keyword field on whitespace at query time (#30691) Allow rollup job creation only if cluster is x-pack ready (#30963) Fix interoperability with < 6.3 transport clients (#30971) [Tests] Fix alias names in PutIndexTemplateRequestTests (#30960) [DOCS] Fixes links (#31011) Watcher: Give test a little more time
2 parents 790e2fe + 0215c4c commit a98e8f7

File tree

103 files changed

+3075
-475
lines changed

Some content is hidden

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

103 files changed

+3075
-475
lines changed

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

Lines changed: 54 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,10 @@
2424
import org.elasticsearch.action.admin.cluster.settings.ClusterUpdateSettingsRequest;
2525
import org.elasticsearch.action.admin.cluster.settings.ClusterUpdateSettingsResponse;
2626
import org.elasticsearch.action.ingest.PutPipelineRequest;
27-
import org.elasticsearch.action.ingest.PutPipelineResponse;
27+
import org.elasticsearch.action.ingest.GetPipelineRequest;
28+
import org.elasticsearch.action.ingest.GetPipelineResponse;
29+
import org.elasticsearch.action.ingest.DeletePipelineRequest;
30+
import org.elasticsearch.action.ingest.WritePipelineResponse;
2831

2932
import java.io.IOException;
3033

@@ -72,9 +75,9 @@ public void putSettingsAsync(ClusterUpdateSettingsRequest clusterUpdateSettingsR
7275
* See
7376
* <a href="https://www.elastic.co/guide/en/elasticsearch/reference/current/put-pipeline-api.html"> Put Pipeline API on elastic.co</a>
7477
*/
75-
public PutPipelineResponse putPipeline(PutPipelineRequest request, Header... headers) throws IOException {
78+
public WritePipelineResponse putPipeline(PutPipelineRequest request, Header... headers) throws IOException {
7679
return restHighLevelClient.performRequestAndParseEntity( request, RequestConverters::putPipeline,
77-
PutPipelineResponse::fromXContent, emptySet(), headers);
80+
WritePipelineResponse::fromXContent, emptySet(), headers);
7881
}
7982

8083
/**
@@ -83,8 +86,54 @@ public PutPipelineResponse putPipeline(PutPipelineRequest request, Header... hea
8386
* See
8487
* <a href="https://www.elastic.co/guide/en/elasticsearch/reference/current/put-pipeline-api.html"> Put Pipeline API on elastic.co</a>
8588
*/
86-
public void putPipelineAsync(PutPipelineRequest request, ActionListener<PutPipelineResponse> listener, Header... headers) {
89+
public void putPipelineAsync(PutPipelineRequest request, ActionListener<WritePipelineResponse> listener, Header... headers) {
8790
restHighLevelClient.performRequestAsyncAndParseEntity( request, RequestConverters::putPipeline,
88-
PutPipelineResponse::fromXContent, listener, emptySet(), headers);
91+
WritePipelineResponse::fromXContent, listener, emptySet(), headers);
92+
}
93+
94+
/**
95+
* Get an existing pipeline
96+
* <p>
97+
* See
98+
* <a href="https://www.elastic.co/guide/en/elasticsearch/reference/current/get-pipeline-api.html"> Get Pipeline API on elastic.co</a>
99+
*/
100+
public GetPipelineResponse getPipeline(GetPipelineRequest request, Header... headers) throws IOException {
101+
return restHighLevelClient.performRequestAndParseEntity( request, RequestConverters::getPipeline,
102+
GetPipelineResponse::fromXContent, emptySet(), headers);
103+
}
104+
105+
/**
106+
* Asynchronously get an existing pipeline
107+
* <p>
108+
* See
109+
* <a href="https://www.elastic.co/guide/en/elasticsearch/reference/master/get-pipeline-api.html"> Get Pipeline API on elastic.co</a>
110+
*/
111+
public void getPipelineAsync(GetPipelineRequest request, ActionListener<GetPipelineResponse> listener, Header... headers) {
112+
restHighLevelClient.performRequestAsyncAndParseEntity( request, RequestConverters::getPipeline,
113+
GetPipelineResponse::fromXContent, listener, emptySet(), headers);
114+
}
115+
116+
/**
117+
* Delete an existing pipeline
118+
* <p>
119+
* See
120+
* <a href="https://www.elastic.co/guide/en/elasticsearch/reference/current/delete-pipeline-api.html">
121+
* Delete Pipeline API on elastic.co</a>
122+
*/
123+
public WritePipelineResponse deletePipeline(DeletePipelineRequest request, Header... headers) throws IOException {
124+
return restHighLevelClient.performRequestAndParseEntity( request, RequestConverters::deletePipeline,
125+
WritePipelineResponse::fromXContent, emptySet(), headers);
126+
}
127+
128+
/**
129+
* Asynchronously delete an existing pipeline
130+
* <p>
131+
* See
132+
* <a href="https://www.elastic.co/guide/en/elasticsearch/reference/current/delete-pipeline-api.html">
133+
* Delete Pipeline API on elastic.co</a>
134+
*/
135+
public void deletePipelineAsync(DeletePipelineRequest request, ActionListener<WritePipelineResponse> listener, Header... headers) {
136+
restHighLevelClient.performRequestAsyncAndParseEntity( request, RequestConverters::deletePipeline,
137+
WritePipelineResponse::fromXContent, listener, emptySet(), headers);
89138
}
90139
}

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

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,9 @@
6060
import org.elasticsearch.action.get.GetRequest;
6161
import org.elasticsearch.action.get.MultiGetRequest;
6262
import org.elasticsearch.action.index.IndexRequest;
63+
import org.elasticsearch.action.ingest.DeletePipelineRequest;
6364
import org.elasticsearch.action.ingest.PutPipelineRequest;
65+
import org.elasticsearch.action.ingest.GetPipelineRequest;
6466
import org.elasticsearch.action.search.ClearScrollRequest;
6567
import org.elasticsearch.action.search.MultiSearchRequest;
6668
import org.elasticsearch.action.search.SearchRequest;
@@ -631,6 +633,18 @@ static Request clusterPutSettings(ClusterUpdateSettingsRequest clusterUpdateSett
631633
return request;
632634
}
633635

636+
static Request getPipeline(GetPipelineRequest getPipelineRequest) {
637+
String endpoint = new EndpointBuilder()
638+
.addPathPartAsIs("_ingest/pipeline")
639+
.addCommaSeparatedPathParts(getPipelineRequest.getIds())
640+
.build();
641+
Request request = new Request(HttpGet.METHOD_NAME, endpoint);
642+
643+
Params parameters = new Params(request);
644+
parameters.withMasterTimeout(getPipelineRequest.masterNodeTimeout());
645+
return request;
646+
}
647+
634648
static Request putPipeline(PutPipelineRequest putPipelineRequest) throws IOException {
635649
String endpoint = new EndpointBuilder()
636650
.addPathPartAsIs("_ingest/pipeline")
@@ -646,6 +660,20 @@ static Request putPipeline(PutPipelineRequest putPipelineRequest) throws IOExcep
646660
return request;
647661
}
648662

663+
static Request deletePipeline(DeletePipelineRequest deletePipelineRequest) {
664+
String endpoint = new EndpointBuilder()
665+
.addPathPartAsIs("_ingest/pipeline")
666+
.addPathPart(deletePipelineRequest.getId())
667+
.build();
668+
Request request = new Request(HttpDelete.METHOD_NAME, endpoint);
669+
670+
Params parameters = new Params(request);
671+
parameters.withTimeout(deletePipelineRequest.timeout());
672+
parameters.withMasterTimeout(deletePipelineRequest.masterNodeTimeout());
673+
674+
return request;
675+
}
676+
649677
static Request listTasks(ListTasksRequest listTaskRequest) {
650678
if (listTaskRequest.getTaskId() != null && listTaskRequest.getTaskId().isSet()) {
651679
throw new IllegalArgumentException("TaskId cannot be used for list tasks request");

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

Lines changed: 43 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,11 @@
2222
import org.elasticsearch.ElasticsearchException;
2323
import org.elasticsearch.action.admin.cluster.settings.ClusterUpdateSettingsRequest;
2424
import org.elasticsearch.action.admin.cluster.settings.ClusterUpdateSettingsResponse;
25+
import org.elasticsearch.action.ingest.GetPipelineRequest;
26+
import org.elasticsearch.action.ingest.GetPipelineResponse;
2527
import org.elasticsearch.action.ingest.PutPipelineRequest;
26-
import org.elasticsearch.action.ingest.PutPipelineResponse;
28+
import org.elasticsearch.action.ingest.DeletePipelineRequest;
29+
import org.elasticsearch.action.ingest.WritePipelineResponse;
2730
import org.elasticsearch.cluster.routing.allocation.decider.EnableAllocationDecider;
2831
import org.elasticsearch.common.bytes.BytesReference;
2932
import org.elasticsearch.common.settings.Settings;
@@ -32,7 +35,7 @@
3235
import org.elasticsearch.common.xcontent.XContentType;
3336
import org.elasticsearch.common.xcontent.support.XContentMapValues;
3437
import org.elasticsearch.indices.recovery.RecoverySettings;
35-
import org.elasticsearch.ingest.Pipeline;
38+
import org.elasticsearch.ingest.PipelineConfiguration;
3639
import org.elasticsearch.rest.RestStatus;
3740

3841
import java.io.IOException;
@@ -113,38 +116,50 @@ public void testClusterUpdateSettingNonExistent() {
113116

114117
public void testPutPipeline() throws IOException {
115118
String id = "some_pipeline_id";
116-
XContentType xContentType = randomFrom(XContentType.values());
117-
XContentBuilder pipelineBuilder = XContentBuilder.builder(xContentType.xContent());
118-
pipelineBuilder.startObject();
119-
{
120-
pipelineBuilder.field(Pipeline.DESCRIPTION_KEY, "some random set of processors");
121-
pipelineBuilder.startArray(Pipeline.PROCESSORS_KEY);
122-
{
123-
pipelineBuilder.startObject().startObject("set");
124-
{
125-
pipelineBuilder
126-
.field("field", "foo")
127-
.field("value", "bar");
128-
}
129-
pipelineBuilder.endObject().endObject();
130-
pipelineBuilder.startObject().startObject("convert");
131-
{
132-
pipelineBuilder
133-
.field("field", "rank")
134-
.field("type", "integer");
135-
}
136-
pipelineBuilder.endObject().endObject();
137-
}
138-
pipelineBuilder.endArray();
139-
}
140-
pipelineBuilder.endObject();
119+
XContentBuilder pipelineBuilder = buildRandomXContentPipeline();
141120
PutPipelineRequest request = new PutPipelineRequest(
142121
id,
143122
BytesReference.bytes(pipelineBuilder),
144123
pipelineBuilder.contentType());
145124

146-
PutPipelineResponse putPipelineResponse =
125+
WritePipelineResponse putPipelineResponse =
147126
execute(request, highLevelClient().cluster()::putPipeline, highLevelClient().cluster()::putPipelineAsync);
148127
assertTrue(putPipelineResponse.isAcknowledged());
149128
}
129+
130+
public void testGetPipeline() throws IOException {
131+
String id = "some_pipeline_id";
132+
XContentBuilder pipelineBuilder = buildRandomXContentPipeline();
133+
{
134+
PutPipelineRequest request = new PutPipelineRequest(
135+
id,
136+
BytesReference.bytes(pipelineBuilder),
137+
pipelineBuilder.contentType()
138+
);
139+
createPipeline(request);
140+
}
141+
142+
GetPipelineRequest request = new GetPipelineRequest(id);
143+
144+
GetPipelineResponse response =
145+
execute(request, highLevelClient().cluster()::getPipeline, highLevelClient().cluster()::getPipelineAsync);
146+
assertTrue(response.isFound());
147+
assertEquals(response.pipelines().get(0).getId(), id);
148+
PipelineConfiguration expectedConfig =
149+
new PipelineConfiguration(id, BytesReference.bytes(pipelineBuilder), pipelineBuilder.contentType());
150+
assertEquals(expectedConfig.getConfigAsMap(), response.pipelines().get(0).getConfigAsMap());
151+
}
152+
153+
public void testDeletePipeline() throws IOException {
154+
String id = "some_pipeline_id";
155+
{
156+
createPipeline(id);
157+
}
158+
159+
DeletePipelineRequest request = new DeletePipelineRequest(id);
160+
161+
WritePipelineResponse response =
162+
execute(request, highLevelClient().cluster()::deletePipeline, highLevelClient().cluster()::deletePipelineAsync);
163+
assertTrue(response.isAcknowledged());
164+
}
150165
}

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

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,12 @@
2121

2222
import org.apache.http.Header;
2323
import org.elasticsearch.action.ActionListener;
24+
import org.elasticsearch.action.ingest.PutPipelineRequest;
2425
import org.elasticsearch.action.support.PlainActionFuture;
26+
import org.elasticsearch.common.bytes.BytesReference;
27+
import org.elasticsearch.common.xcontent.XContentBuilder;
28+
import org.elasticsearch.common.xcontent.XContentType;
29+
import org.elasticsearch.ingest.Pipeline;
2530
import org.elasticsearch.test.rest.ESRestTestCase;
2631
import org.junit.AfterClass;
2732
import org.junit.Before;
@@ -80,4 +85,42 @@ private HighLevelClient(RestClient restClient) {
8085
super(restClient, (client) -> {}, Collections.emptyList());
8186
}
8287
}
88+
89+
protected static XContentBuilder buildRandomXContentPipeline() throws IOException {
90+
XContentType xContentType = randomFrom(XContentType.values());
91+
XContentBuilder pipelineBuilder = XContentBuilder.builder(xContentType.xContent());
92+
pipelineBuilder.startObject();
93+
{
94+
pipelineBuilder.field(Pipeline.DESCRIPTION_KEY, "some random set of processors");
95+
pipelineBuilder.startArray(Pipeline.PROCESSORS_KEY);
96+
{
97+
pipelineBuilder.startObject().startObject("set");
98+
{
99+
pipelineBuilder
100+
.field("field", "foo")
101+
.field("value", "bar");
102+
}
103+
pipelineBuilder.endObject().endObject();
104+
pipelineBuilder.startObject().startObject("convert");
105+
{
106+
pipelineBuilder
107+
.field("field", "rank")
108+
.field("type", "integer");
109+
}
110+
pipelineBuilder.endObject().endObject();
111+
}
112+
pipelineBuilder.endArray();
113+
}
114+
pipelineBuilder.endObject();
115+
return pipelineBuilder;
116+
}
117+
118+
protected static void createPipeline(String pipelineId) throws IOException {
119+
XContentBuilder builder = buildRandomXContentPipeline();
120+
createPipeline(new PutPipelineRequest(pipelineId, BytesReference.bytes(builder), builder.contentType()));
121+
}
122+
123+
protected static void createPipeline(PutPipelineRequest putPipelineRequest) throws IOException {
124+
assertOK(client().performRequest(RequestConverters.putPipeline(putPipelineRequest)));
125+
}
83126
}

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

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,8 @@
6363
import org.elasticsearch.action.get.GetRequest;
6464
import org.elasticsearch.action.get.MultiGetRequest;
6565
import org.elasticsearch.action.index.IndexRequest;
66+
import org.elasticsearch.action.ingest.DeletePipelineRequest;
67+
import org.elasticsearch.action.ingest.GetPipelineRequest;
6668
import org.elasticsearch.action.ingest.PutPipelineRequest;
6769
import org.elasticsearch.action.search.ClearScrollRequest;
6870
import org.elasticsearch.action.search.MultiSearchRequest;
@@ -1482,6 +1484,35 @@ public void testPutPipeline() throws IOException {
14821484
assertEquals(expectedParams, expectedRequest.getParameters());
14831485
}
14841486

1487+
public void testGetPipeline() {
1488+
String pipelineId = "some_pipeline_id";
1489+
Map<String, String> expectedParams = new HashMap<>();
1490+
GetPipelineRequest request = new GetPipelineRequest("some_pipeline_id");
1491+
setRandomMasterTimeout(request, expectedParams);
1492+
Request expectedRequest = RequestConverters.getPipeline(request);
1493+
StringJoiner endpoint = new StringJoiner("/", "/", "");
1494+
endpoint.add("_ingest/pipeline");
1495+
endpoint.add(pipelineId);
1496+
assertEquals(endpoint.toString(), expectedRequest.getEndpoint());
1497+
assertEquals(HttpGet.METHOD_NAME, expectedRequest.getMethod());
1498+
assertEquals(expectedParams, expectedRequest.getParameters());
1499+
}
1500+
1501+
public void testDeletePipeline() {
1502+
String pipelineId = "some_pipeline_id";
1503+
Map<String, String> expectedParams = new HashMap<>();
1504+
DeletePipelineRequest request = new DeletePipelineRequest(pipelineId);
1505+
setRandomMasterTimeout(request, expectedParams);
1506+
setRandomTimeout(request::timeout, AcknowledgedRequest.DEFAULT_ACK_TIMEOUT, expectedParams);
1507+
Request expectedRequest = RequestConverters.deletePipeline(request);
1508+
StringJoiner endpoint = new StringJoiner("/", "/", "");
1509+
endpoint.add("_ingest/pipeline");
1510+
endpoint.add(pipelineId);
1511+
assertEquals(endpoint.toString(), expectedRequest.getEndpoint());
1512+
assertEquals(HttpDelete.METHOD_NAME, expectedRequest.getMethod());
1513+
assertEquals(expectedParams, expectedRequest.getParameters());
1514+
}
1515+
14851516
public void testRollover() throws IOException {
14861517
RolloverRequest rolloverRequest = new RolloverRequest(randomAlphaOfLengthBetween(3, 10),
14871518
randomBoolean() ? null : randomAlphaOfLengthBetween(3, 10));

0 commit comments

Comments
 (0)