|
23 | 23 | import org.opensearch.cluster.ClusterState;
|
24 | 24 | import org.opensearch.cluster.ClusterStateApplier;
|
25 | 25 | import org.opensearch.cluster.metadata.IndexMetadata;
|
| 26 | +import org.opensearch.cluster.metadata.IndexNameExpressionResolver; |
26 | 27 | import org.opensearch.cluster.metadata.Metadata;
|
27 | 28 | import org.opensearch.cluster.node.DiscoveryNode;
|
28 | 29 | import org.opensearch.cluster.service.ClusterManagerTaskKeys;
|
|
35 | 36 | import org.opensearch.common.xcontent.XContentHelper;
|
36 | 37 | import org.opensearch.core.action.ActionListener;
|
37 | 38 | import org.opensearch.core.common.io.stream.NamedWriteableRegistry;
|
| 39 | +import org.opensearch.core.index.Index; |
38 | 40 | import org.opensearch.core.service.ReportingService;
|
39 | 41 | import org.opensearch.core.xcontent.NamedXContentRegistry;
|
40 | 42 | import org.opensearch.env.Environment;
|
@@ -360,7 +362,7 @@ static ClusterState innerDelete(DeleteSearchPipelineRequest request, ClusterStat
|
360 | 362 | return newState.build();
|
361 | 363 | }
|
362 | 364 |
|
363 |
| - public PipelinedRequest resolvePipeline(SearchRequest searchRequest) { |
| 365 | + public PipelinedRequest resolvePipeline(SearchRequest searchRequest, IndexNameExpressionResolver indexNameExpressionResolver) { |
364 | 366 | Pipeline pipeline = Pipeline.NO_OP_PIPELINE;
|
365 | 367 |
|
366 | 368 | if (searchRequest.source() != null && searchRequest.source().searchPipelineSource() != null) {
|
@@ -390,13 +392,22 @@ public PipelinedRequest resolvePipeline(SearchRequest searchRequest) {
|
390 | 392 | if (searchRequest.pipeline() != null) {
|
391 | 393 | // Named pipeline specified for the request
|
392 | 394 | pipelineId = searchRequest.pipeline();
|
393 |
| - } else if (state != null && searchRequest.indices() != null && searchRequest.indices().length == 1) { |
| 395 | + } else if (state != null && searchRequest.indices() != null) { |
394 | 396 | // Check for index default pipeline
|
395 |
| - IndexMetadata indexMetadata = state.metadata().index(searchRequest.indices()[0]); |
396 |
| - if (indexMetadata != null) { |
397 |
| - Settings indexSettings = indexMetadata.getSettings(); |
398 |
| - if (IndexSettings.DEFAULT_SEARCH_PIPELINE.exists(indexSettings)) { |
399 |
| - pipelineId = IndexSettings.DEFAULT_SEARCH_PIPELINE.get(indexSettings); |
| 397 | + Index[] concreteIndices = indexNameExpressionResolver.concreteIndices(state, searchRequest); |
| 398 | + for (Index index : concreteIndices) { |
| 399 | + IndexMetadata indexMetadata = state.metadata().index(index); |
| 400 | + if (indexMetadata != null) { |
| 401 | + Settings indexSettings = indexMetadata.getSettings(); |
| 402 | + if (IndexSettings.DEFAULT_SEARCH_PIPELINE.exists(indexSettings)) { |
| 403 | + String currentPipelineId = IndexSettings.DEFAULT_SEARCH_PIPELINE.get(indexSettings); |
| 404 | + if (NOOP_PIPELINE_ID.equals(pipelineId)) { |
| 405 | + pipelineId = currentPipelineId; |
| 406 | + } else if (pipelineId.equals(currentPipelineId) == false) { |
| 407 | + pipelineId = NOOP_PIPELINE_ID; |
| 408 | + break; |
| 409 | + } |
| 410 | + } |
400 | 411 | }
|
401 | 412 | }
|
402 | 413 | }
|
|
0 commit comments