Ruchira Gayan Ranaweera
Ruchira Gayan Ranaweera

Reputation: 35547

Change timeout in run time - Elasticsearch RestHighLevelClient

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

Answers (1)

Amit
Amit

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

Related Questions