【问题标题】:Change timeout in run time - Elasticsearch RestHighLevelClient在运行时更改超时 - Elasticsearch RestHighLevelClient
【发布时间】:2021-04-06 18:11:26
【问题描述】:

下面是 Rest 客户端初始化。

RestHighLevelClient client = new 
RestHighLevelClient(RestClient.builder(httpHost).setRequestConfigCallback(
    requestConfigBuilder -> requestConfigBuilder
        .setConnectTimeout(30000)
        .setSocketTimeout(90000));

有没有办法即时更改超时值而不重新初始化其余客户端?

【问题讨论】:

    标签: java elasticsearch timeout elasticsearch-high-level-restclient


    【解决方案1】:

    是的,您可以很好地为每个查询级别定义超时,请参阅this 超时方法,该方法在 JHLRC 中可用并且可以在查询级别添加。

    所以查询的示例 java 代码看起来像

    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
    

    【讨论】:

    • 感谢您的回答。这是为了重新索引。无法看到 JHLRC 用于重新索引的相同类型的实现。
    • 是的。下面的代码不起作用。下面定义的超时不反映,。始终采用客户端级别中定义的超时。 ReindexRequest request = new ReindexRequest(); request.setSourceIndices(indexName); request.setDestIndex(destinationIndex); request.setTimeout(new TimeValue(30000L)); ReindexRequestBuilder 没有设置超时选项。
    • @RuchiraGayanRanaweera 这很奇怪,你是如何验证它不工作的,而是采用客户端级别定义的超时?我建议在github.com/elastic/elasticsearch/issues 打开一个问题
    • 我在RestHighLevelClient 中设置了 30 秒超时,在 ReindexRequest 中设置了 30 秒超时。当它抛出超时异常时,我将ReindexRequest 中的超时时间增加到 60 秒。它仍然会在 30 秒后超时。然后我意识到,它正在从客户端而不是从重新索引请求中获取超时。
    猜你喜欢
    • 2013-08-27
    • 2018-12-22
    • 1970-01-01
    • 2011-11-03
    • 1970-01-01
    • 1970-01-01
    • 2021-05-12
    • 1970-01-01
    • 2020-10-06
    相关资源
    最近更新 更多