|
|
@@ -140,14 +140,16 @@ public class IndexResolver {
|
|
|
boolean retrieveAliases = CollectionUtils.isEmpty(types) || types.contains(IndexType.ALIAS);
|
|
|
boolean retrieveIndices = CollectionUtils.isEmpty(types) || types.contains(IndexType.INDEX);
|
|
|
|
|
|
+ String[] indices = Strings.commaDelimitedListToStringArray(indexWildcard);
|
|
|
if (retrieveAliases) {
|
|
|
GetAliasesRequest aliasRequest = new GetAliasesRequest()
|
|
|
.local(true)
|
|
|
- .aliases(indexWildcard)
|
|
|
+ .indices(indices)
|
|
|
+ .aliases(indices)
|
|
|
.indicesOptions(IndicesOptions.lenientExpandOpen());
|
|
|
|
|
|
client.admin().indices().getAliases(aliasRequest, ActionListener.wrap(aliases ->
|
|
|
- resolveIndices(indexWildcard, javaRegex, aliases, retrieveIndices, listener),
|
|
|
+ resolveIndices(indices, javaRegex, aliases, retrieveIndices, listener),
|
|
|
ex -> {
|
|
|
// with security, two exception can be thrown:
|
|
|
// INFE - if no alias matches
|
|
|
@@ -155,34 +157,36 @@ public class IndexResolver {
|
|
|
|
|
|
// in both cases, that is allowed and we continue with the indices request
|
|
|
if (ex instanceof IndexNotFoundException || ex instanceof ElasticsearchSecurityException) {
|
|
|
- resolveIndices(indexWildcard, javaRegex, null, retrieveIndices, listener);
|
|
|
+ resolveIndices(indices, javaRegex, null, retrieveIndices, listener);
|
|
|
} else {
|
|
|
listener.onFailure(ex);
|
|
|
}
|
|
|
}));
|
|
|
} else {
|
|
|
- resolveIndices(indexWildcard, javaRegex, null, retrieveIndices, listener);
|
|
|
+ resolveIndices(indices, javaRegex, null, retrieveIndices, listener);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- private void resolveIndices(String indexWildcard, String javaRegex, GetAliasesResponse aliases,
|
|
|
+ private void resolveIndices(String[] indices, String javaRegex, GetAliasesResponse aliases,
|
|
|
boolean retrieveIndices, ActionListener<Set<IndexInfo>> listener) {
|
|
|
|
|
|
if (retrieveIndices) {
|
|
|
GetIndexRequest indexRequest = new GetIndexRequest()
|
|
|
.local(true)
|
|
|
- .indices(indexWildcard)
|
|
|
+ .indices(indices)
|
|
|
+ .features(Feature.SETTINGS)
|
|
|
+ .includeDefaults(false)
|
|
|
.indicesOptions(IndicesOptions.lenientExpandOpen());
|
|
|
|
|
|
client.admin().indices().getIndex(indexRequest,
|
|
|
- ActionListener.wrap(indices -> filterResults(indexWildcard, javaRegex, aliases, indices, listener),
|
|
|
+ ActionListener.wrap(response -> filterResults(javaRegex, aliases, response, listener),
|
|
|
listener::onFailure));
|
|
|
} else {
|
|
|
- filterResults(indexWildcard, javaRegex, aliases, null, listener);
|
|
|
+ filterResults(javaRegex, aliases, null, listener);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- private void filterResults(String indexWildcard, String javaRegex, GetAliasesResponse aliases, GetIndexResponse indices,
|
|
|
+ private void filterResults(String javaRegex, GetAliasesResponse aliases, GetIndexResponse indices,
|
|
|
ActionListener<Set<IndexInfo>> listener) {
|
|
|
|
|
|
// since the index name does not support ?, filter the results manually
|
|
|
@@ -302,7 +306,6 @@ public class IndexResolver {
|
|
|
return new GetIndexRequest()
|
|
|
.local(true)
|
|
|
.indices(Strings.commaDelimitedListToStringArray(index))
|
|
|
- .features(Feature.MAPPINGS)
|
|
|
//lenient because we throw our own errors looking at the response e.g. if something was not resolved
|
|
|
//also because this way security doesn't throw authorization exceptions but rather honours ignore_unavailable
|
|
|
.indicesOptions(IndicesOptions.lenientExpandOpen());
|