2424import java .util .ArrayList ;
2525import java .util .LinkedHashMap ;
2626import java .util .LinkedHashSet ;
27- import java .util .List ;
2827import java .util .Map ;
2928import java .util .Set ;
3029import java .util .function .BiPredicate ;
@@ -38,14 +37,32 @@ public IndexAbstractionResolver(IndexNameExpressionResolver indexNameExpressionR
3837 this .indexNameExpressionResolver = indexNameExpressionResolver ;
3938 }
4039
40+ public ReplacedIndexExpressions resolveIndexAbstractionsForCrossProjectSearch (
41+ Iterable <String > indices ,
42+ IndicesOptions indicesOptions ,
43+ ProjectMetadata projectMetadata ,
44+ Function <IndexComponentSelector , Set <String >> allAuthorizedAndAvailableBySelector ,
45+ BiPredicate <String , IndexComponentSelector > isAuthorized ,
46+ boolean includeDataStreams
47+ ) {
48+ return resolveIndexAbstractions (
49+ indices ,
50+ // lenient mode required to avoid failing if an index exists in another project
51+ lenientIndicesOptions (indicesOptions ),
52+ projectMetadata ,
53+ allAuthorizedAndAvailableBySelector ,
54+ isAuthorized ,
55+ includeDataStreams
56+ );
57+ }
58+
4159 public ReplacedIndexExpressions resolveIndexAbstractions (
4260 Iterable <String > indices ,
4361 IndicesOptions indicesOptions ,
4462 ProjectMetadata projectMetadata ,
4563 Function <IndexComponentSelector , Set <String >> allAuthorizedAndAvailableBySelector ,
4664 BiPredicate <String , IndexComponentSelector > isAuthorized ,
47- boolean includeDataStreams ,
48- boolean ignoreUnavailableBwcBehavior
65+ boolean includeDataStreams
4966 ) {
5067 final Map <String , ReplacedIndexExpression > replaced = new LinkedHashMap <>();
5168
@@ -154,25 +171,6 @@ && isIndexVisible(
154171 return new ReplacedIndexExpressions (replaced );
155172 }
156173
157- public List <String > resolveIndexAbstractions (
158- Iterable <String > indices ,
159- IndicesOptions indicesOptions ,
160- ProjectMetadata projectMetadata ,
161- Function <IndexComponentSelector , Set <String >> allAuthorizedAndAvailableBySelector ,
162- BiPredicate <String , IndexComponentSelector > isAuthorized ,
163- boolean includeDataStreams
164- ) {
165- return resolveIndexAbstractions (
166- indices ,
167- indicesOptions ,
168- projectMetadata ,
169- allAuthorizedAndAvailableBySelector ,
170- isAuthorized ,
171- includeDataStreams ,
172- true
173- ).indicesAsList ();
174- }
175-
176174 private static void resolveSelectorsAndCollect (
177175 String indexAbstraction ,
178176 String selectorString ,
@@ -342,4 +340,11 @@ && isIndexVisible(
342340 private static boolean isVisibleDueToImplicitHidden (String expression , String index ) {
343341 return index .startsWith ("." ) && expression .startsWith ("." ) && Regex .isSimpleMatchPattern (expression );
344342 }
343+
344+ private static IndicesOptions lenientIndicesOptions (IndicesOptions indicesOptions ) {
345+ return IndicesOptions .builder (indicesOptions )
346+ .concreteTargetOptions (new IndicesOptions .ConcreteTargetOptions (true ))
347+ .wildcardOptions (IndicesOptions .WildcardOptions .builder (indicesOptions .wildcardOptions ()).allowEmptyExpressions (true ).build ())
348+ .build ();
349+ }
345350}
0 commit comments