|  | @@ -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());
 |