Skip to content

Commit a76a9bb

Browse files
committed
Do not return all indices if a specific alias is requested via get aliases api.
If a get alias api call requests a specific alias pattern then indices not having any matching aliases should not be included in the response. Closes #27763
1 parent 8110bbd commit a76a9bb

File tree

4 files changed

+10
-24
lines changed

4 files changed

+10
-24
lines changed

server/src/main/java/org/elasticsearch/action/admin/indices/alias/get/TransportGetAliasesAction.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -62,8 +62,7 @@ protected GetAliasesResponse newResponse() {
6262
@Override
6363
protected void masterOperation(GetAliasesRequest request, ClusterState state, ActionListener<GetAliasesResponse> listener) {
6464
String[] concreteIndices = indexNameExpressionResolver.concreteIndexNames(state, request);
65-
@SuppressWarnings("unchecked")
66-
ImmutableOpenMap<String, List<AliasMetaData>> result = (ImmutableOpenMap) state.metaData().findAliases(request.aliases(), concreteIndices);
65+
ImmutableOpenMap<String, List<AliasMetaData>> result = state.metaData().findAliases(request.aliases(), concreteIndices);
6766
listener.onResponse(new GetAliasesResponse(result));
6867
}
6968

server/src/main/java/org/elasticsearch/cluster/metadata/MetaData.java

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -275,14 +275,12 @@ public ImmutableOpenMap<String, List<AliasMetaData>> findAliases(final String[]
275275

276276
if (!filteredValues.isEmpty()) {
277277
// Make the list order deterministic
278-
CollectionUtil.timSort(filteredValues, new Comparator<AliasMetaData>() {
279-
@Override
280-
public int compare(AliasMetaData o1, AliasMetaData o2) {
281-
return o1.alias().compareTo(o2.alias());
282-
}
283-
});
278+
CollectionUtil.timSort(filteredValues, Comparator.comparing(AliasMetaData::alias));
279+
mapBuilder.put(index, Collections.unmodifiableList(filteredValues));
280+
} else if (matchAllAliases) {
281+
// in case all aliases are requested then it is desired to return the concrete index with no aliases (#25114):
282+
mapBuilder.put(index, Collections.emptyList());
284283
}
285-
mapBuilder.put(index, Collections.unmodifiableList(filteredValues));
286284
}
287285
return mapBuilder.build();
288286
}

server/src/main/java/org/elasticsearch/rest/action/admin/indices/RestGetAliasesAction.java

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

2020
package org.elasticsearch.rest.action.admin.indices;
2121

22-
import com.carrotsearch.hppc.cursors.ObjectCursor;
2322
import com.carrotsearch.hppc.cursors.ObjectObjectCursor;
2423
import org.elasticsearch.action.admin.indices.alias.get.GetAliasesRequest;
2524
import org.elasticsearch.action.admin.indices.alias.get.GetAliasesResponse;

server/src/test/java/org/elasticsearch/aliases/IndexAliasesIT.java

Lines changed: 4 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -570,24 +570,20 @@ public void testIndicesGetAliases() throws Exception {
570570
logger.info("--> getting alias1");
571571
GetAliasesResponse getResponse = admin().indices().prepareGetAliases("alias1").get();
572572
assertThat(getResponse, notNullValue());
573-
assertThat(getResponse.getAliases().size(), equalTo(5));
573+
assertThat(getResponse.getAliases().size(), equalTo(1));
574574
assertThat(getResponse.getAliases().get("foobar").size(), equalTo(1));
575575
assertThat(getResponse.getAliases().get("foobar").get(0), notNullValue());
576576
assertThat(getResponse.getAliases().get("foobar").get(0).alias(), equalTo("alias1"));
577577
assertThat(getResponse.getAliases().get("foobar").get(0).getFilter(), nullValue());
578578
assertThat(getResponse.getAliases().get("foobar").get(0).getIndexRouting(), nullValue());
579579
assertThat(getResponse.getAliases().get("foobar").get(0).getSearchRouting(), nullValue());
580-
assertTrue(getResponse.getAliases().get("test").isEmpty());
581-
assertTrue(getResponse.getAliases().get("test123").isEmpty());
582-
assertTrue(getResponse.getAliases().get("foobarbaz").isEmpty());
583-
assertTrue(getResponse.getAliases().get("bazbar").isEmpty());
584580
AliasesExistResponse existsResponse = admin().indices().prepareAliasesExist("alias1").get();
585581
assertThat(existsResponse.exists(), equalTo(true));
586582

587583
logger.info("--> getting all aliases that start with alias*");
588584
getResponse = admin().indices().prepareGetAliases("alias*").get();
589585
assertThat(getResponse, notNullValue());
590-
assertThat(getResponse.getAliases().size(), equalTo(5));
586+
assertThat(getResponse.getAliases().size(), equalTo(1));
591587
assertThat(getResponse.getAliases().get("foobar").size(), equalTo(2));
592588
assertThat(getResponse.getAliases().get("foobar").get(0), notNullValue());
593589
assertThat(getResponse.getAliases().get("foobar").get(0).alias(), equalTo("alias1"));
@@ -599,10 +595,6 @@ public void testIndicesGetAliases() throws Exception {
599595
assertThat(getResponse.getAliases().get("foobar").get(1).getFilter(), nullValue());
600596
assertThat(getResponse.getAliases().get("foobar").get(1).getIndexRouting(), nullValue());
601597
assertThat(getResponse.getAliases().get("foobar").get(1).getSearchRouting(), nullValue());
602-
assertTrue(getResponse.getAliases().get("test").isEmpty());
603-
assertTrue(getResponse.getAliases().get("test123").isEmpty());
604-
assertTrue(getResponse.getAliases().get("foobarbaz").isEmpty());
605-
assertTrue(getResponse.getAliases().get("bazbar").isEmpty());
606598
existsResponse = admin().indices().prepareAliasesExist("alias*").get();
607599
assertThat(existsResponse.exists(), equalTo(true));
608600

@@ -687,13 +679,12 @@ public void testIndicesGetAliases() throws Exception {
687679
logger.info("--> getting f* for index *bar");
688680
getResponse = admin().indices().prepareGetAliases("f*").addIndices("*bar").get();
689681
assertThat(getResponse, notNullValue());
690-
assertThat(getResponse.getAliases().size(), equalTo(2));
682+
assertThat(getResponse.getAliases().size(), equalTo(1));
691683
assertThat(getResponse.getAliases().get("foobar").get(0), notNullValue());
692684
assertThat(getResponse.getAliases().get("foobar").get(0).alias(), equalTo("foo"));
693685
assertThat(getResponse.getAliases().get("foobar").get(0).getFilter(), nullValue());
694686
assertThat(getResponse.getAliases().get("foobar").get(0).getIndexRouting(), nullValue());
695687
assertThat(getResponse.getAliases().get("foobar").get(0).getSearchRouting(), nullValue());
696-
assertTrue(getResponse.getAliases().get("bazbar").isEmpty());
697688
existsResponse = admin().indices().prepareAliasesExist("f*")
698689
.addIndices("*bar").get();
699690
assertThat(existsResponse.exists(), equalTo(true));
@@ -702,14 +693,13 @@ public void testIndicesGetAliases() throws Exception {
702693
logger.info("--> getting f* for index *bac");
703694
getResponse = admin().indices().prepareGetAliases("foo").addIndices("*bac").get();
704695
assertThat(getResponse, notNullValue());
705-
assertThat(getResponse.getAliases().size(), equalTo(2));
696+
assertThat(getResponse.getAliases().size(), equalTo(1));
706697
assertThat(getResponse.getAliases().get("foobar").size(), equalTo(1));
707698
assertThat(getResponse.getAliases().get("foobar").get(0), notNullValue());
708699
assertThat(getResponse.getAliases().get("foobar").get(0).alias(), equalTo("foo"));
709700
assertThat(getResponse.getAliases().get("foobar").get(0).getFilter(), nullValue());
710701
assertThat(getResponse.getAliases().get("foobar").get(0).getIndexRouting(), nullValue());
711702
assertThat(getResponse.getAliases().get("foobar").get(0).getSearchRouting(), nullValue());
712-
assertTrue(getResponse.getAliases().get("bazbar").isEmpty());
713703
existsResponse = admin().indices().prepareAliasesExist("foo")
714704
.addIndices("*bac").get();
715705
assertThat(existsResponse.exists(), equalTo(true));

0 commit comments

Comments
 (0)