Skip to content

Commit d9ec2a2

Browse files
authored
Remove (deprecated) support for '+' in index expressions (#25274)
Relates to #24515
1 parent e4f4886 commit d9ec2a2

File tree

5 files changed

+9
-52
lines changed

5 files changed

+9
-52
lines changed

core/src/main/java/org/elasticsearch/cluster/metadata/IndexNameExpressionResolver.java

Lines changed: 1 addition & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,6 @@
2929
import org.elasticsearch.common.component.AbstractComponent;
3030
import org.elasticsearch.common.joda.DateMathParser;
3131
import org.elasticsearch.common.joda.FormatDateTimeFormatter;
32-
import org.elasticsearch.common.logging.DeprecationLogger;
33-
import org.elasticsearch.common.logging.Loggers;
3432
import org.elasticsearch.common.regex.Regex;
3533
import org.elasticsearch.common.settings.Settings;
3634
import org.elasticsearch.index.Index;
@@ -58,8 +56,6 @@ public class IndexNameExpressionResolver extends AbstractComponent {
5856

5957
private final List<ExpressionResolver> expressionResolvers;
6058
private final DateMathExpressionResolver dateMathExpressionResolver;
61-
private static final DeprecationLogger DEPRECATION_LOGGER =
62-
new DeprecationLogger(Loggers.getLogger(IndexNameExpressionResolver.class));
6359

6460
public IndexNameExpressionResolver(Settings settings) {
6561
super(settings);
@@ -592,7 +588,6 @@ public List<String> resolve(Context context, List<String> expressions) {
592588
private Set<String> innerResolve(Context context, List<String> expressions, IndicesOptions options, MetaData metaData) {
593589
Set<String> result = null;
594590
boolean wildcardSeen = false;
595-
boolean plusSeen = false;
596591
for (int i = 0; i < expressions.size(); i++) {
597592
String expression = expressions.get(i);
598593
if (aliasOrIndexExists(metaData, expression)) {
@@ -605,14 +600,7 @@ private Set<String> innerResolve(Context context, List<String> expressions, Indi
605600
throw infe(expression);
606601
}
607602
boolean add = true;
608-
if (expression.charAt(0) == '+') {
609-
// if its the first, add empty result set
610-
plusSeen = true;
611-
if (i == 0) {
612-
result = new HashSet<>();
613-
}
614-
expression = expression.substring(1);
615-
} else if (expression.charAt(0) == '-') {
603+
if (expression.charAt(0) == '-') {
616604
// if there is a negation without a wildcard being previously seen, add it verbatim,
617605
// otherwise return the expression
618606
if (wildcardSeen) {
@@ -655,9 +643,6 @@ private Set<String> innerResolve(Context context, List<String> expressions, Indi
655643
wildcardSeen = true;
656644
}
657645
}
658-
if (plusSeen) {
659-
DEPRECATION_LOGGER.deprecated("support for '+' as part of index expressions is deprecated");
660-
}
661646
return result;
662647
}
663648

core/src/test/java/org/elasticsearch/cluster/metadata/IndexNameExpressionResolverTests.java

Lines changed: 0 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1027,24 +1027,6 @@ public void testIndexAliases() {
10271027
assertArrayEquals(new String[] {"test-alias-0", "test-alias-1", "test-alias-non-filtering"}, strings);
10281028
}
10291029

1030-
public void testConcreteIndicesForDeprecatedPattern() {
1031-
MetaData.Builder mdBuilder = MetaData.builder()
1032-
.put(indexBuilder("testXXX").state(State.OPEN))
1033-
.put(indexBuilder("testXXY").state(State.OPEN))
1034-
.put(indexBuilder("testYYY").state(State.OPEN));
1035-
ClusterState state = ClusterState.builder(new ClusterName("_name")).metaData(mdBuilder).build();
1036-
1037-
IndexNameExpressionResolver.Context context = new IndexNameExpressionResolver.Context(state,
1038-
IndicesOptions.fromOptions(true, true, true, true));
1039-
assertThat(newHashSet(indexNameExpressionResolver.concreteIndexNames(context, "+testX*")),
1040-
equalTo(newHashSet("testXXX", "testXXY")));
1041-
assertThat(newHashSet(indexNameExpressionResolver.concreteIndexNames(context, "+testXXX", "+testXXY", "+testYYY", "-testYYY")),
1042-
equalTo(newHashSet("testXXX", "testXXY", "testYYY")));
1043-
assertThat(newHashSet(indexNameExpressionResolver.concreteIndexNames(context, "+testXX*", "+testY*")),
1044-
equalTo(newHashSet("testXXX", "testXXY", "testYYY")));
1045-
assertWarnings("support for '+' as part of index expressions is deprecated");
1046-
}
1047-
10481030
public void testDeleteIndexIgnoresAliases() {
10491031
MetaData.Builder mdBuilder = MetaData.builder()
10501032
.put(indexBuilder("test-index").state(State.OPEN)

core/src/test/java/org/elasticsearch/cluster/metadata/WildcardExpressionResolverTests.java

Lines changed: 0 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -182,20 +182,4 @@ public void testConcreteIndicesWildcardAndAliases() {
182182
private IndexMetaData.Builder indexBuilder(String index) {
183183
return IndexMetaData.builder(index).settings(settings(Version.CURRENT).put(IndexMetaData.SETTING_NUMBER_OF_SHARDS, 1).put(IndexMetaData.SETTING_NUMBER_OF_REPLICAS, 0));
184184
}
185-
186-
public void testForDeprecatedPlusPattern() {
187-
MetaData.Builder mdBuilder = MetaData.builder()
188-
.put(indexBuilder("testXXX").state(IndexMetaData.State.OPEN))
189-
.put(indexBuilder("testXYY").state(IndexMetaData.State.OPEN))
190-
.put(indexBuilder("testYYY").state(IndexMetaData.State.OPEN));
191-
ClusterState state = ClusterState.builder(new ClusterName("_name")).metaData(mdBuilder).build();
192-
IndexNameExpressionResolver.WildcardExpressionResolver resolver = new IndexNameExpressionResolver.WildcardExpressionResolver();
193-
194-
IndexNameExpressionResolver.Context context = new IndexNameExpressionResolver.Context(state, IndicesOptions.fromOptions(true, true, true, true));
195-
assertThat(newHashSet(resolver.resolve(context, Arrays.asList("+testX*", "-testYYY"))), equalTo(newHashSet("testXXX", "testXYY")));
196-
assertThat(newHashSet(resolver.resolve(context, Arrays.asList("+testYYY", "+testXY*"))), equalTo(newHashSet("testYYY", "testXYY")));
197-
assertThat(newHashSet(resolver.resolve(context, Arrays.asList("testYYY", "+testXX*"))), equalTo(newHashSet("testXXX", "testYYY")));
198-
assertWarnings("support for '+' as part of index expressions is deprecated");
199-
}
200-
201185
}

docs/reference/api-conventions.asciidoc

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,8 @@ API, unless otherwise specified.
2020

2121
Most APIs that refer to an `index` parameter support execution across multiple indices,
2222
using simple `test1,test2,test3` notation (or `_all` for all indices). It also
23-
support wildcards, for example: `test*` or `*test` or `te*t` or `*test*`, and the ability to "add" (`+`)
24-
and "remove" (`-`), for example: `+test*,-test3`.
23+
support wildcards, for example: `test*` or `*test` or `te*t` or `*test*`, and the
24+
ability to "exclude" (`-`), for example: `test*,-test3`.
2525

2626
All multi indices API support the following url query string parameters:
2727

docs/reference/migration/migrate_6_0/indices.asciidoc

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,3 +62,9 @@ which will expand to matching indices).
6262
The index parameter in the delete index API no longer accepts alias names.
6363
Instead, it accepts only index names (or wildcards which will expand to
6464
matching indices).
65+
66+
==== Support for '+' has been removed in index expressions
67+
68+
Omitting the '+' has the same effect as specifying it, hence support for '+'
69+
has been removed in index expressions.
70+

0 commit comments

Comments
 (0)