Fix IndexNotFoundException if an multi index search request had a concrete index followed by an add/remove concrete index.
The code now properly adds/removes the index instead of throwing an exception. Closes #3839
This commit is contained in:
parent
52f23918c2
commit
201217945f
|
@ -607,23 +607,21 @@ public class IndexNameExpressionResolver extends AbstractComponent {
|
|||
add = false;
|
||||
expression = expression.substring(1);
|
||||
}
|
||||
if (result == null) {
|
||||
// add all the previous ones...
|
||||
result = new HashSet<>(expressions.subList(0, i));
|
||||
}
|
||||
if (!Regex.isSimpleMatchPattern(expression)) {
|
||||
if (!unavailableIgnoredOrExists(options, metaData, expression)) {
|
||||
throw infe(expression);
|
||||
}
|
||||
if (result != null) {
|
||||
if (add) {
|
||||
result.add(expression);
|
||||
} else {
|
||||
result.remove(expression);
|
||||
}
|
||||
if (add) {
|
||||
result.add(expression);
|
||||
} else {
|
||||
result.remove(expression);
|
||||
}
|
||||
continue;
|
||||
}
|
||||
if (result == null) {
|
||||
// add all the previous ones...
|
||||
result = new HashSet<>(expressions.subList(0, i));
|
||||
}
|
||||
|
||||
final IndexMetaData.State excludeState = excludeState(options);
|
||||
final Map<String, AliasOrIndex> matches = matches(metaData, expression);
|
||||
|
|
|
@ -49,6 +49,10 @@ public class WildcardExpressionResolverTests extends ESTestCase {
|
|||
assertThat(newHashSet(resolver.resolve(context, Arrays.asList("testX*", "kuku"))), equalTo(newHashSet("testXXX", "testXYY", "kuku")));
|
||||
assertThat(newHashSet(resolver.resolve(context, Arrays.asList("*"))), equalTo(newHashSet("testXXX", "testXYY", "testYYY", "kuku")));
|
||||
assertThat(newHashSet(resolver.resolve(context, Arrays.asList("*", "-kuku"))), equalTo(newHashSet("testXXX", "testXYY", "testYYY")));
|
||||
assertThat(newHashSet(resolver.resolve(context, Arrays.asList("testXXX", "+testYYY"))), equalTo(newHashSet("testXXX", "testYYY")));
|
||||
assertThat(newHashSet(resolver.resolve(context, Arrays.asList("testXXX", "-testXXX"))).size(), equalTo(0));
|
||||
assertThat(newHashSet(resolver.resolve(context, Arrays.asList("testXXX", "+testY*"))), equalTo(newHashSet("testXXX", "testYYY")));
|
||||
assertThat(newHashSet(resolver.resolve(context, Arrays.asList("testXXX", "-testX*"))).size(), equalTo(0));
|
||||
}
|
||||
|
||||
public void testConvertWildcardsTests() {
|
||||
|
|
Loading…
Reference in New Issue