Skip to content

Commit bc23bc5

Browse files
committed
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 561351d commit bc23bc5

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;
@@ -1449,4 +1450,28 @@ public Cancellable reloadAnalyzersAsync(ReloadAnalyzersRequest request, RequestO
14491450
return restHighLevelClient.performRequestAsyncAndParseEntity(request, IndicesRequestConverters::reloadAnalyzers, options,
14501451
ReloadAnalyzersResponse::fromXContent, listener, emptySet());
14511452
}
1453+
1454+
/**
1455+
* Synchronously calls the delete alias api
1456+
* @param request the request
1457+
* @param options the request options (e.g. headers), use {@link RequestOptions#DEFAULT} if nothing needs to be customized
1458+
*/
1459+
public org.elasticsearch.client.core.AcknowledgedResponse deleteAlias(DeleteAliasRequest request,
1460+
RequestOptions options) throws IOException {
1461+
return restHighLevelClient.performRequestAndParseEntity(request, IndicesRequestConverters::deleteAlias, options,
1462+
org.elasticsearch.client.core.AcknowledgedResponse::fromXContent, emptySet());
1463+
}
1464+
1465+
/**
1466+
* Asynchronously calls the delete alias api
1467+
* @param request the request
1468+
* @param options the request options (e.g. headers), use {@link RequestOptions#DEFAULT} if nothing needs to be customized
1469+
* @param listener the listener to be notified upon request completion
1470+
* @return cancellable that may be used to cancel the request
1471+
*/
1472+
public Cancellable deleteAliasAsync(DeleteAliasRequest request, RequestOptions options,
1473+
ActionListener<org.elasticsearch.client.core.AcknowledgedResponse> listener) {
1474+
return restHighLevelClient.performRequestAsyncAndParseEntity(request, IndicesRequestConverters::deleteAlias, options,
1475+
org.elasticsearch.client.core.AcknowledgedResponse::fromXContent, listener, emptySet());
1476+
}
14521477
}

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;
@@ -663,4 +664,17 @@ static Request reloadAnalyzers(ReloadAnalyzersRequest reloadAnalyzersRequest) {
663664
request.addParameters(parameters.asMap());
664665
return request;
665666
}
667+
668+
static Request deleteAlias(DeleteAliasRequest deleteAliasRequest) {
669+
String endpoint = new RequestConverters.EndpointBuilder()
670+
.addPathPart(deleteAliasRequest.getIndex())
671+
.addPathPartAsIs("_alias")
672+
.addPathPart(deleteAliasRequest.getAlias()).build();
673+
Request request = new Request(HttpDelete.METHOD_NAME, endpoint);
674+
RequestConverters.Params parameters = new RequestConverters.Params();
675+
parameters.withTimeout(deleteAliasRequest.timeout());
676+
parameters.withMasterTimeout(deleteAliasRequest.masterNodeTimeout());
677+
request.addParameters(parameters.asMap());
678+
return request;
679+
}
666680
}
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;
@@ -1947,4 +1948,32 @@ public void testReloadAnalyzer() throws IOException {
19471948
assertNotNull(reloadResponse.shards());
19481949
assertTrue(reloadResponse.getReloadedDetails().containsKey("test"));
19491950
}
1951+
1952+
public void testDeleteAlias() throws IOException {
1953+
String index = "test";
1954+
createIndex(index, Settings.EMPTY);
1955+
1956+
String alias = "alias";
1957+
String alias2 = "alias2";
1958+
IndicesAliasesRequest aliasesAddRemoveRequest = new IndicesAliasesRequest();
1959+
aliasesAddRemoveRequest.addAliasAction(new AliasActions(AliasActions.Type.ADD).indices(index).alias(alias));
1960+
aliasesAddRemoveRequest.addAliasAction(new AliasActions(AliasActions.Type.ADD).indices(index).alias(alias + "2"));
1961+
AcknowledgedResponse aliasResponse = execute(aliasesAddRemoveRequest, highLevelClient().indices()::updateAliases,
1962+
highLevelClient().indices()::updateAliasesAsync);
1963+
assertTrue(aliasResponse.isAcknowledged());
1964+
assertThat(aliasExists(alias), equalTo(true));
1965+
assertThat(aliasExists(alias2), equalTo(true));
1966+
assertThat(aliasExists(index, alias), equalTo(true));
1967+
assertThat(aliasExists(index, alias2), equalTo(true));
1968+
1969+
DeleteAliasRequest request = new DeleteAliasRequest(index, alias);
1970+
org.elasticsearch.client.core.AcknowledgedResponse aliasDeleteResponse = execute(request,
1971+
highLevelClient().indices()::deleteAlias,
1972+
highLevelClient().indices()::deleteAliasAsync);
1973+
1974+
assertThat(aliasExists(alias), equalTo(false));
1975+
assertThat(aliasExists(alias2), equalTo(true));
1976+
assertThat(aliasExists(index, alias), equalTo(false));
1977+
assertThat(aliasExists(index, alias2), equalTo(true));
1978+
}
19501979
}

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;
@@ -1243,4 +1244,18 @@ public void testReloadAnalyzers() {
12431244
Assert.assertThat(request.getParameters(), equalTo(expectedParams));
12441245
Assert.assertThat(request.getEntity(), nullValue());
12451246
}
1247+
1248+
public void testDeleteAlias() {
1249+
DeleteAliasRequest deleteAliasRequest = new DeleteAliasRequest(randomAlphaOfLength(4), randomAlphaOfLength(4));
1250+
1251+
Map<String, String> expectedParams = new HashMap<>();
1252+
RequestConvertersTests.setRandomMasterTimeout(deleteAliasRequest, expectedParams);
1253+
RequestConvertersTests.setRandomTimeout(deleteAliasRequest, AcknowledgedRequest.DEFAULT_ACK_TIMEOUT, expectedParams);
1254+
1255+
Request request = IndicesRequestConverters.deleteAlias(deleteAliasRequest);
1256+
Assert.assertThat(request.getMethod(), equalTo(HttpDelete.METHOD_NAME));
1257+
Assert.assertThat(request.getEndpoint(), equalTo("/" + deleteAliasRequest.getIndex() + "/_alias/" + deleteAliasRequest.getAlias()));
1258+
Assert.assertThat(request.getParameters(), equalTo(expectedParams));
1259+
Assert.assertThat(request.getEntity(), nullValue());
1260+
}
12461261
}

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;
@@ -2879,4 +2880,87 @@ public void onFailure(Exception e) {
28792880
// end::reload-analyzers-notfound
28802881
}
28812882
}
2883+
2884+
@SuppressWarnings("unused")
2885+
public void testDeleteAlias() throws Exception {
2886+
RestHighLevelClient client = highLevelClient();
2887+
2888+
{
2889+
CreateIndexResponse createIndexResponse = client.indices().create(new CreateIndexRequest("index1"), RequestOptions.DEFAULT);
2890+
assertTrue(createIndexResponse.isAcknowledged());
2891+
}
2892+
{
2893+
IndicesAliasesRequest request = new IndicesAliasesRequest();
2894+
AliasActions aliasAction =
2895+
new AliasActions(AliasActions.Type.ADD)
2896+
.index("index1")
2897+
.alias("alias1");
2898+
request.addAliasAction(aliasAction);
2899+
AcknowledgedResponse indicesAliasesResponse =
2900+
client.indices().updateAliases(request, RequestOptions.DEFAULT);
2901+
assertTrue(indicesAliasesResponse.isAcknowledged());
2902+
}
2903+
{
2904+
IndicesAliasesRequest request = new IndicesAliasesRequest();
2905+
AliasActions aliasAction =
2906+
new AliasActions(AliasActions.Type.ADD)
2907+
.index("index1")
2908+
.alias("alias2");
2909+
request.addAliasAction(aliasAction);
2910+
AcknowledgedResponse indicesAliasesResponse =
2911+
client.indices().updateAliases(request, RequestOptions.DEFAULT);
2912+
assertTrue(indicesAliasesResponse.isAcknowledged());
2913+
}
2914+
{
2915+
// tag::delete-alias-request
2916+
DeleteAliasRequest request = new DeleteAliasRequest("index1", "alias1");
2917+
// end::delete-alias-request
2918+
2919+
// tag::delete-alias-request-timeout
2920+
request.setTimeout(TimeValue.timeValueMinutes(2)); // <1>
2921+
// end::delete-alias-request-timeout
2922+
// tag::delete-alias-request-masterTimeout
2923+
request.setMasterTimeout(TimeValue.timeValueMinutes(1)); // <1>
2924+
// end::delete-alias-request-masterTimeout
2925+
2926+
// tag::delete-alias-execute
2927+
org.elasticsearch.client.core.AcknowledgedResponse deleteAliasResponse =
2928+
client.indices().deleteAlias(request, RequestOptions.DEFAULT);
2929+
// end::delete-alias-execute
2930+
2931+
// tag::delete-alias-response
2932+
boolean acknowledged = deleteAliasResponse.isAcknowledged(); // <1>
2933+
// end::delete-alias-response
2934+
assertTrue(acknowledged);
2935+
}
2936+
2937+
{
2938+
DeleteAliasRequest request = new DeleteAliasRequest("index1", "alias2"); // <1>
2939+
2940+
// tag::delete-alias-execute-listener
2941+
ActionListener<org.elasticsearch.client.core.AcknowledgedResponse> listener =
2942+
new ActionListener<org.elasticsearch.client.core.AcknowledgedResponse>() {
2943+
@Override
2944+
public void onResponse(org.elasticsearch.client.core.AcknowledgedResponse deleteAliasResponse) {
2945+
// <1>
2946+
}
2947+
2948+
@Override
2949+
public void onFailure(Exception e) {
2950+
// <2>
2951+
}
2952+
};
2953+
// end::delete-alias-execute-listener
2954+
2955+
// Replace the empty listener by a blocking listener in test
2956+
final CountDownLatch latch = new CountDownLatch(1);
2957+
listener = new LatchedActionListener<>(listener, latch);
2958+
2959+
// tag::delete-alias-execute-async
2960+
client.indices().deleteAliasAsync(request, RequestOptions.DEFAULT, listener); // <1>
2961+
// end::delete-alias-execute-async
2962+
2963+
assertTrue(latch.await(30L, TimeUnit.SECONDS));
2964+
}
2965+
}
28822966
}
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)