Skip to content

Commit 31e8bff

Browse files
committed
Rename SearchRequest#crossClusterSearch (#42363)
The SearchRequest#crossClusterSearch method is currently used only as part of cross cluster search request, when minimizing roundtrips. It will soon be used also when splitting a search into two: one for throttled and one for non throttled indices. It will probably be used for other usecases as well in the future, hence it makes sense to generalize its name to subSearchRequest.
1 parent a75964d commit 31e8bff

File tree

5 files changed

+26
-25
lines changed

5 files changed

+26
-25
lines changed

server/src/main/java/org/elasticsearch/action/search/SearchRequest.java

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -135,9 +135,10 @@ public SearchRequest(String[] indices, SearchSourceBuilder source) {
135135
}
136136

137137
/**
138-
* Creates a new search request by providing the search request to copy all fields from, the indices to search against, the alias of
139-
* the cluster where it will be executed, as well as the start time in milliseconds from the epoch time and whether the reduction
140-
* should be final or not. Used when a {@link SearchRequest} is created and executed as part of a cross-cluster search request
138+
* Creates a new sub-search request starting from the original search request that is provided.
139+
* For internal use only, allows to fork a search request into multiple search requests that will be executed independently.
140+
* Such requests will not be finally reduced, so that their results can be merged together in one response at completion.
141+
* Used when a {@link SearchRequest} is created and executed as part of a cross-cluster search request
141142
* performing reduction on each cluster in order to minimize network round-trips between the coordinating node and the remote clusters.
142143
*
143144
* @param originalSearchRequest the original search request
@@ -146,8 +147,8 @@ public SearchRequest(String[] indices, SearchSourceBuilder source) {
146147
* @param absoluteStartMillis the absolute start time to be used on the remote clusters to ensure that the same value is used
147148
* @param finalReduce whether the reduction should be final or not
148149
*/
149-
static SearchRequest crossClusterSearch(SearchRequest originalSearchRequest, String[] indices,
150-
String clusterAlias, long absoluteStartMillis, boolean finalReduce) {
150+
static SearchRequest subSearchRequest(SearchRequest originalSearchRequest, String[] indices,
151+
String clusterAlias, long absoluteStartMillis, boolean finalReduce) {
151152
Objects.requireNonNull(originalSearchRequest, "search request must not be null");
152153
validateIndices(indices);
153154
Objects.requireNonNull(clusterAlias, "cluster alias must not be null");
@@ -300,15 +301,15 @@ boolean isFinalReduce() {
300301
/**
301302
* Returns the current time in milliseconds from the time epoch, to be used for the execution of this search request. Used to
302303
* ensure that the same value, determined by the coordinating node, is used on all nodes involved in the execution of the search
303-
* request. When created through {@link #crossClusterSearch(SearchRequest, String[], String, long, boolean)}, this method returns
304+
* request. When created through {@link #subSearchRequest(SearchRequest, String[], String, long, boolean)}, this method returns
304305
* the provided current time, otherwise it will return {@link System#currentTimeMillis()}.
305306
*/
306307
long getOrCreateAbsoluteStartMillis() {
307308
return absoluteStartMillis == DEFAULT_ABSOLUTE_START_MILLIS ? System.currentTimeMillis() : absoluteStartMillis;
308309
}
309310

310311
/**
311-
* Returns the provided <code>absoluteStartMillis</code> when created through {@link #crossClusterSearch} and
312+
* Returns the provided <code>absoluteStartMillis</code> when created through {@link #subSearchRequest} and
312313
* -1 otherwise.
313314
*/
314315
long getAbsoluteStartMillis() {

server/src/main/java/org/elasticsearch/action/search/TransportSearchAction.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -270,7 +270,7 @@ static void ccsRemoteReduce(SearchRequest searchRequest, OriginalIndices localIn
270270
String clusterAlias = entry.getKey();
271271
boolean skipUnavailable = remoteClusterService.isSkipUnavailable(clusterAlias);
272272
OriginalIndices indices = entry.getValue();
273-
SearchRequest ccsSearchRequest = SearchRequest.crossClusterSearch(searchRequest, indices.indices(),
273+
SearchRequest ccsSearchRequest = SearchRequest.subSearchRequest(searchRequest, indices.indices(),
274274
clusterAlias, timeProvider.getAbsoluteStartMillis(), true);
275275
Client remoteClusterClient = remoteClusterService.getRemoteClusterClient(threadPool, clusterAlias);
276276
remoteClusterClient.search(ccsSearchRequest, new ActionListener<SearchResponse>() {
@@ -306,7 +306,7 @@ public void onFailure(Exception e) {
306306
String clusterAlias = entry.getKey();
307307
boolean skipUnavailable = remoteClusterService.isSkipUnavailable(clusterAlias);
308308
OriginalIndices indices = entry.getValue();
309-
SearchRequest ccsSearchRequest = SearchRequest.crossClusterSearch(searchRequest, indices.indices(),
309+
SearchRequest ccsSearchRequest = SearchRequest.subSearchRequest(searchRequest, indices.indices(),
310310
clusterAlias, timeProvider.getAbsoluteStartMillis(), false);
311311
ActionListener<SearchResponse> ccsListener = createCCSListener(clusterAlias, skipUnavailable, countDown,
312312
skippedClusters, exceptions, searchResponseMerger, totalClusters, listener);
@@ -316,7 +316,7 @@ public void onFailure(Exception e) {
316316
if (localIndices != null) {
317317
ActionListener<SearchResponse> ccsListener = createCCSListener(RemoteClusterAware.LOCAL_CLUSTER_GROUP_KEY,
318318
false, countDown, skippedClusters, exceptions, searchResponseMerger, totalClusters, listener);
319-
SearchRequest ccsLocalSearchRequest = SearchRequest.crossClusterSearch(searchRequest, localIndices.indices(),
319+
SearchRequest ccsLocalSearchRequest = SearchRequest.subSearchRequest(searchRequest, localIndices.indices(),
320320
RemoteClusterAware.LOCAL_CLUSTER_GROUP_KEY, timeProvider.getAbsoluteStartMillis(), false);
321321
localSearchConsumer.accept(ccsLocalSearchRequest, ccsListener);
322322
}

server/src/test/java/org/elasticsearch/action/search/SearchPhaseControllerTests.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -330,7 +330,7 @@ private static AtomicArray<SearchPhaseResult> generateFetchResults(int nShards,
330330
}
331331

332332
private static SearchRequest randomSearchRequest() {
333-
return randomBoolean() ? new SearchRequest() : SearchRequest.crossClusterSearch(new SearchRequest(),
333+
return randomBoolean() ? new SearchRequest() : SearchRequest.subSearchRequest(new SearchRequest(),
334334
Strings.EMPTY_ARRAY, "remote", 0, randomBoolean());
335335
}
336336

server/src/test/java/org/elasticsearch/action/search/SearchRequestTests.java

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -53,21 +53,21 @@ protected SearchRequest createSearchRequest() throws IOException {
5353
return request;
5454
}
5555
//clusterAlias and absoluteStartMillis do not have public getters/setters hence we randomize them only in this test specifically.
56-
return SearchRequest.crossClusterSearch(request, request.indices(),
56+
return SearchRequest.subSearchRequest(request, request.indices(),
5757
randomAlphaOfLengthBetween(5, 10), randomNonNegativeLong(), randomBoolean());
5858
}
5959

6060
public void testWithLocalReduction() {
61-
expectThrows(NullPointerException.class, () -> SearchRequest.crossClusterSearch(null, Strings.EMPTY_ARRAY, "", 0, randomBoolean()));
61+
expectThrows(NullPointerException.class, () -> SearchRequest.subSearchRequest(null, Strings.EMPTY_ARRAY, "", 0, randomBoolean()));
6262
SearchRequest request = new SearchRequest();
63-
expectThrows(NullPointerException.class, () -> SearchRequest.crossClusterSearch(request, null, "", 0, randomBoolean()));
64-
expectThrows(NullPointerException.class, () -> SearchRequest.crossClusterSearch(request,
63+
expectThrows(NullPointerException.class, () -> SearchRequest.subSearchRequest(request, null, "", 0, randomBoolean()));
64+
expectThrows(NullPointerException.class, () -> SearchRequest.subSearchRequest(request,
6565
new String[]{null}, "", 0, randomBoolean()));
66-
expectThrows(NullPointerException.class, () -> SearchRequest.crossClusterSearch(request,
66+
expectThrows(NullPointerException.class, () -> SearchRequest.subSearchRequest(request,
6767
Strings.EMPTY_ARRAY, null, 0, randomBoolean()));
68-
expectThrows(IllegalArgumentException.class, () -> SearchRequest.crossClusterSearch(request,
68+
expectThrows(IllegalArgumentException.class, () -> SearchRequest.subSearchRequest(request,
6969
Strings.EMPTY_ARRAY, "", -1, randomBoolean()));
70-
SearchRequest searchRequest = SearchRequest.crossClusterSearch(request, Strings.EMPTY_ARRAY, "", 0, randomBoolean());
70+
SearchRequest searchRequest = SearchRequest.subSearchRequest(request, Strings.EMPTY_ARRAY, "", 0, randomBoolean());
7171
assertNull(searchRequest.validate());
7272
}
7373

server/src/test/java/org/elasticsearch/action/search/TransportSearchActionSingleNodeTests.java

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ public void testLocalClusterAlias() {
4646
assertEquals(RestStatus.CREATED, indexResponse.status());
4747

4848
{
49-
SearchRequest searchRequest = SearchRequest.crossClusterSearch(new SearchRequest(), Strings.EMPTY_ARRAY,
49+
SearchRequest searchRequest = SearchRequest.subSearchRequest(new SearchRequest(), Strings.EMPTY_ARRAY,
5050
"local", nowInMillis, randomBoolean());
5151
SearchResponse searchResponse = client().search(searchRequest).actionGet();
5252
assertEquals(1, searchResponse.getHits().getTotalHits().value);
@@ -58,7 +58,7 @@ public void testLocalClusterAlias() {
5858
assertEquals("1", hit.getId());
5959
}
6060
{
61-
SearchRequest searchRequest = SearchRequest.crossClusterSearch(new SearchRequest(), Strings.EMPTY_ARRAY,
61+
SearchRequest searchRequest = SearchRequest.subSearchRequest(new SearchRequest(), Strings.EMPTY_ARRAY,
6262
"", nowInMillis, randomBoolean());
6363
SearchResponse searchResponse = client().search(searchRequest).actionGet();
6464
assertEquals(1, searchResponse.getHits().getTotalHits().value);
@@ -100,21 +100,21 @@ public void testAbsoluteStartMillis() {
100100
assertEquals(0, searchResponse.getTotalShards());
101101
}
102102
{
103-
SearchRequest searchRequest = SearchRequest.crossClusterSearch(new SearchRequest(),
103+
SearchRequest searchRequest = SearchRequest.subSearchRequest(new SearchRequest(),
104104
Strings.EMPTY_ARRAY, "", 0, randomBoolean());
105105
SearchResponse searchResponse = client().search(searchRequest).actionGet();
106106
assertEquals(2, searchResponse.getHits().getTotalHits().value);
107107
}
108108
{
109-
SearchRequest searchRequest = SearchRequest.crossClusterSearch(new SearchRequest(),
109+
SearchRequest searchRequest = SearchRequest.subSearchRequest(new SearchRequest(),
110110
Strings.EMPTY_ARRAY, "", 0, randomBoolean());
111111
searchRequest.indices("<test-{now/d}>");
112112
SearchResponse searchResponse = client().search(searchRequest).actionGet();
113113
assertEquals(1, searchResponse.getHits().getTotalHits().value);
114114
assertEquals("test-1970.01.01", searchResponse.getHits().getHits()[0].getIndex());
115115
}
116116
{
117-
SearchRequest searchRequest = SearchRequest.crossClusterSearch(new SearchRequest(),
117+
SearchRequest searchRequest = SearchRequest.subSearchRequest(new SearchRequest(),
118118
Strings.EMPTY_ARRAY, "", 0, randomBoolean());
119119
SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();
120120
RangeQueryBuilder rangeQuery = new RangeQueryBuilder("date");
@@ -156,7 +156,7 @@ public void testFinalReduce() {
156156
source.aggregation(terms);
157157

158158
{
159-
SearchRequest searchRequest = randomBoolean() ? originalRequest : SearchRequest.crossClusterSearch(originalRequest,
159+
SearchRequest searchRequest = randomBoolean() ? originalRequest : SearchRequest.subSearchRequest(originalRequest,
160160
Strings.EMPTY_ARRAY, "remote", nowInMillis, true);
161161
SearchResponse searchResponse = client().search(searchRequest).actionGet();
162162
assertEquals(2, searchResponse.getHits().getTotalHits().value);
@@ -165,7 +165,7 @@ public void testFinalReduce() {
165165
assertEquals(1, longTerms.getBuckets().size());
166166
}
167167
{
168-
SearchRequest searchRequest = SearchRequest.crossClusterSearch(originalRequest,
168+
SearchRequest searchRequest = SearchRequest.subSearchRequest(originalRequest,
169169
Strings.EMPTY_ARRAY, "remote", nowInMillis, false);
170170
SearchResponse searchResponse = client().search(searchRequest).actionGet();
171171
assertEquals(2, searchResponse.getHits().getTotalHits().value);

0 commit comments

Comments
 (0)