Skip to content

Commit 084d8d8

Browse files
turackangalmartijnvg
authored andcommitted
[HLRC] Send terminate_after as query string parameter to the count API (#46474)
Prior to this commit terminate_after was sent as request body parameter (via SearchSourceBuilder), which is not possible in the count api. Closes #46446
1 parent 4281389 commit 084d8d8

File tree

3 files changed

+18
-2
lines changed

3 files changed

+18
-2
lines changed

client/rest-high-level/src/main/java/org/elasticsearch/client/RequestConverters.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -498,6 +498,9 @@ static Request count(CountRequest countRequest) throws IOException {
498498
params.withRouting(countRequest.routing());
499499
params.withPreference(countRequest.preference());
500500
params.withIndicesOptions(countRequest.indicesOptions());
501+
if (countRequest.terminateAfter() != 0){
502+
params.withTerminateAfter(countRequest.terminateAfter());
503+
}
501504
request.addParameters(params.asMap());
502505
request.setEntity(createEntity(countRequest.source(), REQUEST_BODY_CONTENT_TYPE));
503506
return request;
@@ -910,6 +913,10 @@ Params withStoredFields(String[] storedFields) {
910913
return this;
911914
}
912915

916+
Params withTerminateAfter(int terminateAfter){
917+
return putParam("terminate_after", String.valueOf(terminateAfter));
918+
}
919+
913920
Params withTimeout(TimeValue timeout) {
914921
return putParam("timeout", timeout);
915922
}

client/rest-high-level/src/main/java/org/elasticsearch/client/core/CountRequest.java

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
import org.elasticsearch.action.support.IndicesOptions;
2626
import org.elasticsearch.common.Strings;
2727
import org.elasticsearch.search.builder.SearchSourceBuilder;
28+
import org.elasticsearch.search.internal.SearchContext;
2829

2930
import java.util.Arrays;
3031
import java.util.Objects;
@@ -42,6 +43,7 @@ public final class CountRequest extends ActionRequest implements IndicesRequest.
4243
private String preference;
4344
private SearchSourceBuilder searchSourceBuilder;
4445
private IndicesOptions indicesOptions = DEFAULT_INDICES_OPTIONS;
46+
private int terminateAfter = SearchContext.DEFAULT_TERMINATE_AFTER;
4547

4648
public CountRequest() {
4749
this.searchSourceBuilder = new SearchSourceBuilder();
@@ -165,11 +167,14 @@ public CountRequest minScore(Float minScore) {
165167
}
166168

167169
public int terminateAfter() {
168-
return this.searchSourceBuilder.terminateAfter();
170+
return this.terminateAfter;
169171
}
170172

171173
public CountRequest terminateAfter(int terminateAfter) {
172-
this.searchSourceBuilder.terminateAfter(terminateAfter);
174+
if (terminateAfter < 0) {
175+
throw new IllegalArgumentException("terminateAfter must be > 0");
176+
}
177+
this.terminateAfter = terminateAfter;
173178
return this;
174179
}
175180

client/rest-high-level/src/test/java/org/elasticsearch/client/RequestConvertersTests.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1191,6 +1191,10 @@ private static void setRandomCountParams(CountRequest countRequest,
11911191
countRequest.preference(randomAlphaOfLengthBetween(3, 10));
11921192
expectedParams.put("preference", countRequest.preference());
11931193
}
1194+
if (randomBoolean()){
1195+
countRequest.terminateAfter(randomIntBetween(0, Integer.MAX_VALUE));
1196+
expectedParams.put("terminate_after", String.valueOf(countRequest.terminateAfter()));
1197+
}
11941198
}
11951199

11961200
public void testMultiSearch() throws IOException {

0 commit comments

Comments
 (0)