@@ -296,14 +296,28 @@ private ImmutableOpenMap<String, List<AliasMetaData>> findAliases(String[] origi
296
296
return ImmutableOpenMap .of ();
297
297
}
298
298
299
- boolean matchAllAliases = matchAllAliases (aliases );
299
+ List <String > includeAliases = new ArrayList <>();
300
+ List <String > excludeAliases = new ArrayList <>();
301
+ boolean wildcardSeen = false ;
302
+ for (final String alias : aliases ) {
303
+ if (Regex .isSimpleMatchPattern (alias )) {
304
+ wildcardSeen = true ;
305
+ }
306
+ if (wildcardSeen && alias .charAt (0 ) == '-' ) {
307
+ excludeAliases .add (alias .substring (1 ));
308
+ } else {
309
+ includeAliases .add (alias );
310
+ }
311
+ }
312
+ boolean matchAllAliases = matchAllAliases (includeAliases );
300
313
ImmutableOpenMap .Builder <String , List <AliasMetaData >> mapBuilder = ImmutableOpenMap .builder ();
301
314
for (String index : concreteIndices ) {
302
315
IndexMetaData indexMetaData = indices .get (index );
303
316
List <AliasMetaData > filteredValues = new ArrayList <>();
304
317
for (ObjectCursor <AliasMetaData > cursor : indexMetaData .getAliases ().values ()) {
305
318
AliasMetaData value = cursor .value ;
306
- if (matchAllAliases || Regex .simpleMatch (aliases , value .alias ())) {
319
+ if ((matchAllAliases || Regex .simpleMatch (includeAliases , value .alias ()))
320
+ && Regex .simpleMatch (excludeAliases , value .alias ()) == false ) {
307
321
filteredValues .add (value );
308
322
}
309
323
}
@@ -317,13 +331,13 @@ private ImmutableOpenMap<String, List<AliasMetaData>> findAliases(String[] origi
317
331
return mapBuilder .build ();
318
332
}
319
333
320
- private static boolean matchAllAliases (final String [] aliases ) {
334
+ private static boolean matchAllAliases (final List < String > aliases ) {
321
335
for (String alias : aliases ) {
322
336
if (alias .equals (ALL )) {
323
337
return true ;
324
338
}
325
339
}
326
- return aliases .length == 0 ;
340
+ return aliases .isEmpty () ;
327
341
}
328
342
329
343
/**
0 commit comments