class RestAutoConfigure extends AbstractElasticsearchConfiguration {
    private final static String SCHEME = "http";
    private final static String URI_SPLIT = ":";

    @Resource
    private ElasticsearchProperties restProperties;

    @Resource
    private RestClientPoolProperties poolProperties;

    @Override
    public RestHighLevelClient elasticsearchClient() {<FILL_FUNCTION_BODY>}
}

        List<String> urlArr = restProperties.getUris();
        HttpHost[] httpPostArr = new HttpHost[urlArr.size()];
        for (int i = 0; i < urlArr.size(); i++) {
            HttpHost httpHost = new HttpHost(urlArr.get(i).split(URI_SPLIT)[0].trim(),
                    Integer.parseInt(urlArr.get(i).split(URI_SPLIT)[1].trim()), SCHEME);
            httpPostArr[i] = httpHost;
        }
        final CredentialsProvider credentialsProvider = new BasicCredentialsProvider();
        credentialsProvider.setCredentials(AuthScope.ANY,
                new UsernamePasswordCredentials(restProperties.getUsername(), restProperties.getPassword()));
        RestClientBuilder builder = RestClient.builder(httpPostArr)
                // 异步httpclient连接数配置
                .setHttpClientConfigCallback(httpClientBuilder -> {
                    // 账号密码登录
                    httpClientBuilder.setDefaultCredentialsProvider(credentialsProvider);
                    // httpclient连接数配置
                    httpClientBuilder.setMaxConnTotal(poolProperties.getMaxConnectNum())
                                     .setMaxConnPerRoute(poolProperties.getMaxConnectPerRoute());
                    return httpClientBuilder;
                })
                // 异步httpclient连接延时配置
                .setRequestConfigCallback(requestConfigBuilder -> {
                    requestConfigBuilder.setConnectTimeout(poolProperties.getConnectTimeOut())
                            .setSocketTimeout(poolProperties.getSocketTimeOut())
                            .setConnectionRequestTimeout(poolProperties.getConnectionRequestTimeOut());
                    return requestConfigBuilder;
                });
        return new RestHighLevelClient(builder);
    
<no_super_class>