Reputation: 35547
Below is the Rest client initialization.
RestHighLevelClient client = new
RestHighLevelClient(RestClient.builder(httpHost).setRequestConfigCallback(
requestConfigBuilder -> requestConfigBuilder
.setConnectTimeout(30000)
.setSocketTimeout(90000));
Is there a way to change timeout values on the fly without reinitializing the rest client ?
Upvotes: 1
Views: 4025
Reputation: 32376
Yes you can very well define the timeout for each query level, please see this timeout method which is available in JHLRC and can be added at query level.
So sample java code for your query looks like
SearchRequest searchRequest = new SearchRequest(USERS_INDEX_NAME);
BoolQueryBuilder boolQueryBuilder = new BoolQueryBuilder();
boolQueryBuilder.minimumShouldMatch(1);
MatchQueryBuilder emailMatchQueryBuilder = new MatchQueryBuilder("emailId", email);
MatchQueryBuilder userIdMatchQueryBuilder = new MatchQueryBuilder("userId", userId);
MatchQueryBuilder mobileMatchQueryBuilder = new MatchQueryBuilder("mobileNumber", mobile);
boolQueryBuilder.should(emailMatchQueryBuilder);
boolQueryBuilder.should(userIdMatchQueryBuilder);
boolQueryBuilder.should(mobileMatchQueryBuilder);
SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
searchSourceBuilder.timeout(new TimeValue(1000)); // note this
Upvotes: 1