Skip to content

Commit 7115d3e

Browse files
authored
Add delete alias to the HLRC (#48819)
The delete alias call is a rest only API call, but should still be added to the rest client. This commit adds it as well as relevant tests. Ref #47678
1 parent c868a11 commit 7115d3e

File tree

9 files changed

+259
-1
lines changed

9 files changed

+259
-1
lines changed

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

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@
5050
import org.elasticsearch.client.indices.CloseIndexResponse;
5151
import org.elasticsearch.client.indices.CreateIndexRequest;
5252
import org.elasticsearch.client.indices.CreateIndexResponse;
53+
import org.elasticsearch.client.indices.DeleteAliasRequest;
5354
import org.elasticsearch.client.indices.FreezeIndexRequest;
5455
import org.elasticsearch.client.indices.GetFieldMappingsRequest;
5556
import org.elasticsearch.client.indices.GetFieldMappingsResponse;
@@ -1062,4 +1063,28 @@ public Cancellable reloadAnalyzersAsync(ReloadAnalyzersRequest request, RequestO
10621063
return restHighLevelClient.performRequestAsyncAndParseEntity(request, IndicesRequestConverters::reloadAnalyzers, options,
10631064
ReloadAnalyzersResponse::fromXContent, listener, emptySet());
10641065
}
1066+
1067+
/**
1068+
* Synchronously calls the delete alias api
1069+
* @param request the request
1070+
* @param options the request options (e.g. headers), use {@link RequestOptions#DEFAULT} if nothing needs to be customized
1071+
*/
1072+
public org.elasticsearch.client.core.AcknowledgedResponse deleteAlias(DeleteAliasRequest request,
1073+
RequestOptions options) throws IOException {
1074+
return restHighLevelClient.performRequestAndParseEntity(request, IndicesRequestConverters::deleteAlias, options,
1075+
org.elasticsearch.client.core.AcknowledgedResponse::fromXContent, emptySet());
1076+
}
1077+
1078+
/**
1079+
* Asynchronously calls the delete alias api
1080+
* @param request the request
1081+
* @param options the request options (e.g. headers), use {@link RequestOptions#DEFAULT} if nothing needs to be customized
1082+
* @param listener the listener to be notified upon request completion
1083+
* @return cancellable that may be used to cancel the request
1084+
*/
1085+
public Cancellable deleteAliasAsync(DeleteAliasRequest request, RequestOptions options,
1086+
ActionListener<org.elasticsearch.client.core.AcknowledgedResponse> listener) {
1087+
return restHighLevelClient.performRequestAsyncAndParseEntity(request, IndicesRequestConverters::deleteAlias, options,
1088+
org.elasticsearch.client.core.AcknowledgedResponse::fromXContent, listener, emptySet());
1089+
}
10651090
}

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

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@
4242
import org.elasticsearch.client.indices.AnalyzeRequest;
4343
import org.elasticsearch.client.indices.CloseIndexRequest;
4444
import org.elasticsearch.client.indices.CreateIndexRequest;
45+
import org.elasticsearch.client.indices.DeleteAliasRequest;
4546
import org.elasticsearch.client.indices.FreezeIndexRequest;
4647
import org.elasticsearch.client.indices.GetFieldMappingsRequest;
4748
import org.elasticsearch.client.indices.GetIndexRequest;
@@ -483,4 +484,17 @@ static Request reloadAnalyzers(ReloadAnalyzersRequest reloadAnalyzersRequest) {
483484
request.addParameters(parameters.asMap());
484485
return request;
485486
}
487+
488+
static Request deleteAlias(DeleteAliasRequest deleteAliasRequest) {
489+
String endpoint = new RequestConverters.EndpointBuilder()
490+
.addPathPart(deleteAliasRequest.getIndex())
491+
.addPathPartAsIs("_alias")
492+
.addPathPart(deleteAliasRequest.getAlias()).build();
493+
Request request = new Request(HttpDelete.METHOD_NAME, endpoint);
494+
RequestConverters.Params parameters = new RequestConverters.Params();
495+
parameters.withTimeout(deleteAliasRequest.timeout());
496+
parameters.withMasterTimeout(deleteAliasRequest.masterNodeTimeout());
497+
request.addParameters(parameters.asMap());
498+
return request;
499+
}
486500
}
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
/*
2+
* Licensed to Elasticsearch under one or more contributor
3+
* license agreements. See the NOTICE file distributed with
4+
* this work for additional information regarding copyright
5+
* ownership. Elasticsearch licenses this file to you under
6+
* the Apache License, Version 2.0 (the "License"); you may
7+
* not use this file except in compliance with the License.
8+
* You may obtain a copy of the License at
9+
*
10+
* http://www.apache.org/licenses/LICENSE-2.0
11+
*
12+
* Unless required by applicable law or agreed to in writing,
13+
* software distributed under the License is distributed on an
14+
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15+
* KIND, either express or implied. See the License for the
16+
* specific language governing permissions and limitations
17+
* under the License.
18+
*/
19+
20+
package org.elasticsearch.client.indices;
21+
22+
import org.elasticsearch.client.TimedRequest;
23+
24+
public class DeleteAliasRequest extends TimedRequest {
25+
26+
private final String index;
27+
private final String alias;
28+
29+
public DeleteAliasRequest(String index, String alias) {
30+
this.index = index;
31+
this.alias = alias;
32+
}
33+
34+
public String getIndex() {
35+
return index;
36+
}
37+
38+
public String getAlias() {
39+
return alias;
40+
}
41+
}

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

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,7 @@
6161
import org.elasticsearch.client.indices.CloseIndexResponse;
6262
import org.elasticsearch.client.indices.CreateIndexRequest;
6363
import org.elasticsearch.client.indices.CreateIndexResponse;
64+
import org.elasticsearch.client.indices.DeleteAliasRequest;
6465
import org.elasticsearch.client.indices.FreezeIndexRequest;
6566
import org.elasticsearch.client.indices.GetFieldMappingsRequest;
6667
import org.elasticsearch.client.indices.GetFieldMappingsResponse;
@@ -1550,4 +1551,32 @@ public void testReloadAnalyzer() throws IOException {
15501551
assertNotNull(reloadResponse.shards());
15511552
assertTrue(reloadResponse.getReloadedDetails().containsKey("test"));
15521553
}
1554+
1555+
public void testDeleteAlias() throws IOException {
1556+
String index = "test";
1557+
createIndex(index, Settings.EMPTY);
1558+
1559+
String alias = "alias";
1560+
String alias2 = "alias2";
1561+
IndicesAliasesRequest aliasesAddRemoveRequest = new IndicesAliasesRequest();
1562+
aliasesAddRemoveRequest.addAliasAction(new AliasActions(AliasActions.Type.ADD).indices(index).alias(alias));
1563+
aliasesAddRemoveRequest.addAliasAction(new AliasActions(AliasActions.Type.ADD).indices(index).alias(alias + "2"));
1564+
AcknowledgedResponse aliasResponse = execute(aliasesAddRemoveRequest, highLevelClient().indices()::updateAliases,
1565+
highLevelClient().indices()::updateAliasesAsync);
1566+
assertTrue(aliasResponse.isAcknowledged());
1567+
assertThat(aliasExists(alias), equalTo(true));
1568+
assertThat(aliasExists(alias2), equalTo(true));
1569+
assertThat(aliasExists(index, alias), equalTo(true));
1570+
assertThat(aliasExists(index, alias2), equalTo(true));
1571+
1572+
DeleteAliasRequest request = new DeleteAliasRequest(index, alias);
1573+
org.elasticsearch.client.core.AcknowledgedResponse aliasDeleteResponse = execute(request,
1574+
highLevelClient().indices()::deleteAlias,
1575+
highLevelClient().indices()::deleteAliasAsync);
1576+
1577+
assertThat(aliasExists(alias), equalTo(false));
1578+
assertThat(aliasExists(alias2), equalTo(true));
1579+
assertThat(aliasExists(index, alias), equalTo(false));
1580+
assertThat(aliasExists(index, alias2), equalTo(true));
1581+
}
15531582
}

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

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@
4646
import org.elasticsearch.client.indices.AnalyzeRequest;
4747
import org.elasticsearch.client.indices.CloseIndexRequest;
4848
import org.elasticsearch.client.indices.CreateIndexRequest;
49+
import org.elasticsearch.client.indices.DeleteAliasRequest;
4950
import org.elasticsearch.client.indices.GetFieldMappingsRequest;
5051
import org.elasticsearch.client.indices.GetIndexRequest;
5152
import org.elasticsearch.client.indices.GetIndexTemplatesRequest;
@@ -934,4 +935,18 @@ public void testReloadAnalyzers() {
934935
Assert.assertThat(request.getParameters(), equalTo(expectedParams));
935936
Assert.assertThat(request.getEntity(), nullValue());
936937
}
938+
939+
public void testDeleteAlias() {
940+
DeleteAliasRequest deleteAliasRequest = new DeleteAliasRequest(randomAlphaOfLength(4), randomAlphaOfLength(4));
941+
942+
Map<String, String> expectedParams = new HashMap<>();
943+
RequestConvertersTests.setRandomMasterTimeout(deleteAliasRequest, expectedParams);
944+
RequestConvertersTests.setRandomTimeout(deleteAliasRequest, AcknowledgedRequest.DEFAULT_ACK_TIMEOUT, expectedParams);
945+
946+
Request request = IndicesRequestConverters.deleteAlias(deleteAliasRequest);
947+
Assert.assertThat(request.getMethod(), equalTo(HttpDelete.METHOD_NAME));
948+
Assert.assertThat(request.getEndpoint(), equalTo("/" + deleteAliasRequest.getIndex() + "/_alias/" + deleteAliasRequest.getAlias()));
949+
Assert.assertThat(request.getParameters(), equalTo(expectedParams));
950+
Assert.assertThat(request.getEntity(), nullValue());
951+
}
937952
}

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

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -763,7 +763,6 @@ public void testApiNamingConventions() throws Exception {
763763
"create",
764764
"get_script_context",
765765
"get_source",
766-
"indices.delete_alias",
767766
"indices.exists_type",
768767
"indices.get_upgrade",
769768
"indices.put_alias",

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

Lines changed: 84 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,7 @@
6565
import org.elasticsearch.client.indices.CloseIndexResponse;
6666
import org.elasticsearch.client.indices.CreateIndexRequest;
6767
import org.elasticsearch.client.indices.CreateIndexResponse;
68+
import org.elasticsearch.client.indices.DeleteAliasRequest;
6869
import org.elasticsearch.client.indices.DetailAnalyzeResponse;
6970
import org.elasticsearch.client.indices.FreezeIndexRequest;
7071
import org.elasticsearch.client.indices.GetFieldMappingsRequest;
@@ -2880,4 +2881,87 @@ public void onFailure(Exception e) {
28802881
// end::reload-analyzers-notfound
28812882
}
28822883
}
2884+
2885+
@SuppressWarnings("unused")
2886+
public void testDeleteAlias() throws Exception {
2887+
RestHighLevelClient client = highLevelClient();
2888+
2889+
{
2890+
CreateIndexResponse createIndexResponse = client.indices().create(new CreateIndexRequest("index1"), RequestOptions.DEFAULT);
2891+
assertTrue(createIndexResponse.isAcknowledged());
2892+
}
2893+
{
2894+
IndicesAliasesRequest request = new IndicesAliasesRequest();
2895+
AliasActions aliasAction =
2896+
new AliasActions(AliasActions.Type.ADD)
2897+
.index("index1")
2898+
.alias("alias1");
2899+
request.addAliasAction(aliasAction);
2900+
AcknowledgedResponse indicesAliasesResponse =
2901+
client.indices().updateAliases(request, RequestOptions.DEFAULT);
2902+
assertTrue(indicesAliasesResponse.isAcknowledged());
2903+
}
2904+
{
2905+
IndicesAliasesRequest request = new IndicesAliasesRequest();
2906+
AliasActions aliasAction =
2907+
new AliasActions(AliasActions.Type.ADD)
2908+
.index("index1")
2909+
.alias("alias2");
2910+
request.addAliasAction(aliasAction);
2911+
AcknowledgedResponse indicesAliasesResponse =
2912+
client.indices().updateAliases(request, RequestOptions.DEFAULT);
2913+
assertTrue(indicesAliasesResponse.isAcknowledged());
2914+
}
2915+
{
2916+
// tag::delete-alias-request
2917+
DeleteAliasRequest request = new DeleteAliasRequest("index1", "alias1");
2918+
// end::delete-alias-request
2919+
2920+
// tag::delete-alias-request-timeout
2921+
request.setTimeout(TimeValue.timeValueMinutes(2)); // <1>
2922+
// end::delete-alias-request-timeout
2923+
// tag::delete-alias-request-masterTimeout
2924+
request.setMasterTimeout(TimeValue.timeValueMinutes(1)); // <1>
2925+
// end::delete-alias-request-masterTimeout
2926+
2927+
// tag::delete-alias-execute
2928+
org.elasticsearch.client.core.AcknowledgedResponse deleteAliasResponse =
2929+
client.indices().deleteAlias(request, RequestOptions.DEFAULT);
2930+
// end::delete-alias-execute
2931+
2932+
// tag::delete-alias-response
2933+
boolean acknowledged = deleteAliasResponse.isAcknowledged(); // <1>
2934+
// end::delete-alias-response
2935+
assertTrue(acknowledged);
2936+
}
2937+
2938+
{
2939+
DeleteAliasRequest request = new DeleteAliasRequest("index1", "alias2"); // <1>
2940+
2941+
// tag::delete-alias-execute-listener
2942+
ActionListener<org.elasticsearch.client.core.AcknowledgedResponse> listener =
2943+
new ActionListener<org.elasticsearch.client.core.AcknowledgedResponse>() {
2944+
@Override
2945+
public void onResponse(org.elasticsearch.client.core.AcknowledgedResponse deleteAliasResponse) {
2946+
// <1>
2947+
}
2948+
2949+
@Override
2950+
public void onFailure(Exception e) {
2951+
// <2>
2952+
}
2953+
};
2954+
// end::delete-alias-execute-listener
2955+
2956+
// Replace the empty listener by a blocking listener in test
2957+
final CountDownLatch latch = new CountDownLatch(1);
2958+
listener = new LatchedActionListener<>(listener, latch);
2959+
2960+
// tag::delete-alias-execute-async
2961+
client.indices().deleteAliasAsync(request, RequestOptions.DEFAULT, listener); // <1>
2962+
// end::delete-alias-execute-async
2963+
2964+
assertTrue(latch.await(30L, TimeUnit.SECONDS));
2965+
}
2966+
}
28832967
}
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
--
2+
:api: delete-alias
3+
:request: DeleteAliasRequest
4+
:response: AcknowledgedResponse
5+
--
6+
7+
[id="{upid}-{api}"]
8+
=== Delete Alias API
9+
10+
[id="{upid}-{api}-request"]
11+
==== Delete Alias Request
12+
13+
An +{request}+ requires an `index` and an `alias` argument:
14+
15+
["source","java",subs="attributes,callouts,macros"]
16+
--------------------------------------------------
17+
include-tagged::{doc-tests-file}[{api}-request]
18+
--------------------------------------------------
19+
20+
==== Optional arguments
21+
The following arguments can optionally be provided:
22+
23+
["source","java",subs="attributes,callouts,macros"]
24+
--------------------------------------------------
25+
include-tagged::{doc-tests-file}[{api}-request-timeout]
26+
--------------------------------------------------
27+
<1> Timeout to wait for the all the nodes to acknowledge the index is opened
28+
as a `TimeValue`
29+
30+
["source","java",subs="attributes,callouts,macros"]
31+
--------------------------------------------------
32+
include-tagged::{doc-tests-file}[{api}-request-masterTimeout]
33+
--------------------------------------------------
34+
<1> Timeout to connect to the master node as a `TimeValue`
35+
36+
[id="{upid}-{api}-response"]
37+
==== Delete Alias Response
38+
39+
The returned +{response}+ indicates if the request to delete the alias
40+
was received.
41+
42+
["source","java",subs="attributes,callouts,macros"]
43+
--------------------------------------------------
44+
include-tagged::{doc-tests-file}[{api}-response]
45+
--------------------------------------------------
46+
<1> Whether or not the request to delete the alias was
47+
acknowledged.
48+
49+
include::../execution.asciidoc[]

docs/java-rest/high-level/supported-apis.asciidoc

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,7 @@ Alias Management::
120120
* <<{upid}-update-aliases>>
121121
* <<{upid}-exists-alias>>
122122
* <<{upid}-get-alias>>
123+
* <<{upid}-delete-alias>>
123124

124125
Template Management::
125126
* <<{upid}-get-templates>>
@@ -145,6 +146,7 @@ include::indices/put_mapping.asciidoc[]
145146
include::indices/get_mappings.asciidoc[]
146147
include::indices/get_field_mappings.asciidoc[]
147148
include::indices/update_aliases.asciidoc[]
149+
include::indices/delete_alias.asciidoc[]
148150
include::indices/exists_alias.asciidoc[]
149151
include::indices/get_alias.asciidoc[]
150152
include::indices/put_settings.asciidoc[]

0 commit comments

Comments
 (0)