Remove (deprecated) support for '+' in index expressions (elastic/x-pack-elasticsearch#1749)

Original commit: elastic/x-pack-elasticsearch@fc3fa2b842
This commit is contained in:
Luca Cavanna 2017-06-19 15:20:02 +02:00 committed by GitHub
parent 40700f22b1
commit 6344bff121
3 changed files with 22 additions and 21 deletions

View File

@ -251,21 +251,15 @@ public class IndicesAndAliasesResolver {
//TODO Investigate reusing code from vanilla es to resolve index names and wildcards
private List<String> replaceWildcardsWithAuthorizedIndices(String[] indices, IndicesOptions indicesOptions, MetaData metaData,
List<String> authorizedIndices, boolean replaceWildcards) {
//the order matters when it comes to + and -
//the order matters when it comes to exclusions
List<String> finalIndices = new ArrayList<>();
boolean wildcardSeen = false;
for (String index : indices) {
String aliasOrIndex;
boolean minus = false;
if (index.charAt(0) == '+') {
if (index.charAt(0) == '-' && wildcardSeen) {
aliasOrIndex = index.substring(1);
} else if (index.charAt(0) == '-') {
if (wildcardSeen) {
aliasOrIndex = index.substring(1);
minus = true;
} else {
aliasOrIndex = index;
}
minus = true;
} else {
aliasOrIndex = index;
}

View File

@ -237,9 +237,9 @@ public class IndicesAndAliasesResolverTests extends ESTestCase {
}
public void testExplicitMixedWildcardDashIndices() {
SearchRequest request = new SearchRequest("-index21", "-does_not_exist", "-index1*", "--index11", "+-index20");
SearchRequest request = new SearchRequest("-index21", "-does_not_exist", "-index1*", "--index11");
Set<String> indices = defaultIndicesResolver.resolve(request, metaData, buildAuthorizedIndices(userDashIndices, SearchAction.NAME));
String[] expectedIndices = new String[]{"-index10", "-index21", "-index20", "-does_not_exist"};
String[] expectedIndices = new String[]{"-index10", "-index21", "-does_not_exist"};
assertThat(indices.size(), equalTo(expectedIndices.length));
assertThat(request.indices().length, equalTo(expectedIndices.length));
assertThat(indices, hasItems(expectedIndices));
@ -257,8 +257,8 @@ public class IndicesAndAliasesResolverTests extends ESTestCase {
assertThat(request.indices(), arrayContainingInAnyOrder(expectedIndices));
}
public void testDashIndicesPlusAndMinus() {
SearchRequest request = new SearchRequest("+-index10", "+-index11", "--index11", "-index20");
public void testDashIndicesMinus() {
SearchRequest request = new SearchRequest("-index10", "-index11", "--index11", "-index20");
request.indicesOptions(IndicesOptions.fromOptions(false, randomBoolean(), randomBoolean(), randomBoolean()));
Set<String> indices = defaultIndicesResolver.resolve(request, metaData, buildAuthorizedIndices(userDashIndices, SearchAction.NAME));
String[] expectedIndices = new String[]{"-index10", "-index11", "--index11", "-index20"};
@ -268,6 +268,13 @@ public class IndicesAndAliasesResolverTests extends ESTestCase {
assertThat(request.indices(), arrayContainingInAnyOrder(expectedIndices));
}
public void testDashIndicesPlus() {
SearchRequest request = new SearchRequest("+bar");
request.indicesOptions(IndicesOptions.fromOptions(true, false, randomBoolean(), randomBoolean()));
expectThrows(IndexNotFoundException.class,
() -> defaultIndicesResolver.resolve(request, metaData, buildAuthorizedIndices(userDashIndices, SearchAction.NAME)));
}
public void testDashNotExistingIndex() {
SearchRequest request = new SearchRequest("-does_not_exist");
request.indicesOptions(IndicesOptions.fromOptions(false, randomBoolean(), randomBoolean(), randomBoolean()));
@ -389,8 +396,8 @@ public class IndicesAndAliasesResolverTests extends ESTestCase {
assertThat(request.indices(), arrayContainingInAnyOrder(replacedIndices));
}
public void testResolveWildcardsPlusAndMinusExpandWilcardsOpenStrict() {
SearchRequest request = new SearchRequest("*", "-foofoo*", "+barbaz", "+foob*");
public void testResolveWildcardsExclusionsExpandWilcardsOpenStrict() {
SearchRequest request = new SearchRequest("*", "-foofoo*", "barbaz", "foob*");
request.indicesOptions(IndicesOptions.fromOptions(false, true, true, false));
Set<String> indices = defaultIndicesResolver.resolve(request, metaData, buildAuthorizedIndices(user, SearchAction.NAME));
String[] replacedIndices = new String[]{"bar", "barbaz"};
@ -411,8 +418,8 @@ public class IndicesAndAliasesResolverTests extends ESTestCase {
assertThat(request.indices(), arrayContainingInAnyOrder(replacedIndices));
}
public void testResolveWildcardsPlusAndMinusExpandWilcardsOpenAndClosedStrict() {
SearchRequest request = new SearchRequest("*", "-foofoo*", "+barbaz");
public void testResolveWildcardsExclusionExpandWilcardsOpenAndClosedStrict() {
SearchRequest request = new SearchRequest("*", "-foofoo*", "barbaz");
request.indicesOptions(IndicesOptions.fromOptions(false, randomBoolean(), true, true));
Set<String> indices = defaultIndicesResolver.resolve(request, metaData, buildAuthorizedIndices(user, SearchAction.NAME));
String[] replacedIndices = new String[]{"bar", "bar-closed", "barbaz"};
@ -422,8 +429,8 @@ public class IndicesAndAliasesResolverTests extends ESTestCase {
assertThat(request.indices(), arrayContainingInAnyOrder(replacedIndices));
}
public void testResolveWildcardsPlusAndMinusExpandWilcardsOpenAndClosedIgnoreUnavailable() {
SearchRequest request = new SearchRequest("*", "-foofoo*", "+barbaz");
public void testResolveWildcardsExclusionExpandWilcardsOpenAndClosedIgnoreUnavailable() {
SearchRequest request = new SearchRequest("*", "-foofoo*", "barbaz");
request.indicesOptions(IndicesOptions.fromOptions(true, randomBoolean(), true, true));
Set<String> indices = defaultIndicesResolver.resolve(request, metaData, buildAuthorizedIndices(user, SearchAction.NAME));
String[] replacedIndices = new String[]{"bar", "bar-closed"};

View File

@ -186,7 +186,7 @@ public class ReadActionsTests extends SecurityIntegTestCase {
//index1 is not authorized and referred to through wildcard, test111 and test112 are excluded
createIndicesWithRandomAliases("test1", "test10", "test111", "test112", "test2", "index1");
SearchResponse searchResponse = client().prepareSearch("+test2", "+test11*", "index*", "-test2*").get();
SearchResponse searchResponse = client().prepareSearch("test2", "test11*", "index*", "-test2*").get();
assertReturnedIndices(searchResponse, "test111", "test112");
}
@ -194,7 +194,7 @@ public class ReadActionsTests extends SecurityIntegTestCase {
//index1 is not authorized and referred to through wildcard, test111 and test112 are excluded
createIndicesWithRandomAliases("test1", "test10", "test111", "test112", "test2", "index1");
SearchResponse searchResponse = client().prepareSearch("+test10", "+test11*", "index*", "-test111", "-test112").get();
SearchResponse searchResponse = client().prepareSearch("test10", "test11*", "index*", "-test111", "-test112").get();
assertReturnedIndices(searchResponse, "test10");
}