Skip to content

Commit d51e7c5

Browse files
CPS fanout on field_caps
1 parent 21ad2c0 commit d51e7c5

File tree

2 files changed

+52
-6
lines changed

2 files changed

+52
-6
lines changed

x-pack/plugin/eql/src/main/java/org/elasticsearch/xpack/eql/session/EqlConfiguration.java

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ public class EqlConfiguration extends org.elasticsearch.xpack.ql.session.Configu
3333
private final boolean allowPartialSearchResults;
3434
private final boolean allowPartialSequenceResults;
3535
private final String projectRouting;
36+
private final boolean crossProjectEnabled;
3637

3738
@Nullable
3839
private final QueryBuilder filter;
@@ -59,6 +60,48 @@ public EqlConfiguration(
5960
String clientId,
6061
TaskId taskId,
6162
EqlSearchTask task
63+
) {
64+
this(
65+
indices,
66+
zi,
67+
username,
68+
clusterName,
69+
filter,
70+
runtimeMappings,
71+
fetchFields,
72+
requestTimeout,
73+
indicesOptions,
74+
fetchSize,
75+
maxSamplesPerKey,
76+
allowPartialSearchResults,
77+
allowPartialSequenceResults,
78+
projectRouting,
79+
clientId,
80+
taskId,
81+
task,
82+
false
83+
);
84+
}
85+
86+
public EqlConfiguration(
87+
String[] indices,
88+
ZoneId zi,
89+
String username,
90+
String clusterName,
91+
QueryBuilder filter,
92+
Map<String, Object> runtimeMappings,
93+
List<FieldAndFormat> fetchFields,
94+
TimeValue requestTimeout,
95+
IndicesOptions indicesOptions,
96+
int fetchSize,
97+
int maxSamplesPerKey,
98+
boolean allowPartialSearchResults,
99+
boolean allowPartialSequenceResults,
100+
String projectRouting,
101+
String clientId,
102+
TaskId taskId,
103+
EqlSearchTask task,
104+
boolean crossProjectEnabled
62105
) {
63106
super(zi, username, clusterName);
64107

@@ -76,6 +119,11 @@ public EqlConfiguration(
76119
this.allowPartialSearchResults = allowPartialSearchResults;
77120
this.allowPartialSequenceResults = allowPartialSequenceResults;
78121
this.projectRouting = projectRouting;
122+
this.crossProjectEnabled = crossProjectEnabled;
123+
}
124+
125+
public boolean crossProjectEnabled() {
126+
return crossProjectEnabled;
79127
}
80128

81129
public String projectRouting() {

x-pack/plugin/eql/src/main/java/org/elasticsearch/xpack/eql/session/EqlSession.java

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
import org.elasticsearch.client.internal.Client;
1313
import org.elasticsearch.client.internal.ParentTaskAssigningClient;
1414
import org.elasticsearch.common.breaker.CircuitBreaker;
15+
import org.elasticsearch.search.crossproject.CrossProjectIndexResolutionValidator;
1516
import org.elasticsearch.tasks.TaskCancelledException;
1617
import org.elasticsearch.xpack.eql.analysis.Analyzer;
1718
import org.elasticsearch.xpack.eql.analysis.AnalyzerContext;
@@ -124,12 +125,9 @@ private <T> void preAnalyze(LogicalPlan parsed, ActionListener<LogicalPlan> list
124125
}
125126
Set<String> fieldNames = fieldNames(parsed);
126127
IndicesOptions indicesOptions = configuration.indicesOptions();
127-
128-
//TODO this is for CPS, put it behind a flag
129-
indicesOptions = IndicesOptions.builder(indicesOptions)
130-
.crossProjectModeOptions(new IndicesOptions.CrossProjectModeOptions(true))
131-
.build();
132-
128+
if (configuration.crossProjectEnabled()) {
129+
indicesOptions = CrossProjectIndexResolutionValidator.indicesOptionsForCrossProjectFanout(indicesOptions);
130+
}
133131
// TODO pass configuration.projectRouting();
134132
indexResolver.resolveAsMergedMapping(
135133
indexWildcard,

0 commit comments

Comments
 (0)