RequestOptions.Builder builder = RequestOptions.DEFAULT.toBuilder();
builder.setHttpAsyncResponseConsumerFactory(
new HttpAsyncResponseConsumerFactory
// Modified to 500MB
.HeapBufferedResponseConsumerFactory(300 * 1024 * 1024 ));
request.source(SearchSourceBuilder.searchSource().query(boolQueryBuilder).size(10000));
SearchResponse response = null;
try {
response = yqClient.search(request, builder.build());
} catch (IOException e) {
e.printStackTrace();
}
Can also be set by reflection
// Set es query buffer size RequestOptions requestOptions = RequestOptions.DEFAULT; Class<? extends RequestOptions> reqClass = requestOptions.getClass(); Field reqField = reqClass.getDeclaredField("httpAsyncResponseConsumerFactory"); reqField.setAccessible(true); //remove final Field modifiersField = Field.class.getDeclaredField("modifiers"); modifiersField.setAccessible(true); modifiersField.setInt(reqField, reqField.getModifiers() & ~Modifier.FINAL); // Set the default factory reqField.set(requestOptions, new HttpAsyncResponseConsumerFactory() { @Override public HttpAsyncResponseConsumer<HttpResponse> createHttpAsyncResponseConsumer() { //500MB return new HeapBufferedAsyncResponseConsumer(5 * 100 * 1024 * 1024); }