首页 > 解决方案 > 使用 Elastic Search 代理配置 Rest High Client

问题描述

有什么方法可以配置我的其余高客户端以使用代理与 es 连接。我的配置是

    @Override
@Bean
public RestHighLevelClient elasticsearchClient() {
    return new RestHighLevelClient(RestClient.builder(HttpHost.create(elasticSearchUrl)));}

我的弹性搜索网址是:aaa.bbbb.ccc.company.com/api/elastic-search-proxy 在这种情况下,我得到 No such host is known (aaa.bbbb.ccc.company.com/api/elastic-search-代理)什么对我来说很清楚,但有什么选项可以配置它吗?

标签: spring-bootelasticsearchresthighlevelclient

解决方案


它在JHLRC 初始化的 Elasticsearch 文档中提到,使用以下代码:

RestClientBuilder builder = RestClient.builder(
    new HttpHost("localhost", 9200, "http"));
builder.setHttpClientConfigCallback(new HttpClientConfigCallback() {
        @Override
        public HttpAsyncClientBuilder customizeHttpClient(
                HttpAsyncClientBuilder httpClientBuilder) {
            return httpClientBuilder.setProxy(
                new HttpHost("proxy", 9000, "http"));  
        }
    });

设置允许修改 http 客户端配置的回调(例如,通过 ssl 的加密通信,或 org.apache.http.impl.nio.client.HttpAsyncClientBuilder 允许设置的任何内容)

因此,在您的情况下,您需要在下面的代码中提供您的原始主机

new HttpHost("localhost", 9200, "http"));

然后您需要在回调中定义对代理服务器的回调setHttpClientConfigCallback

new HttpHost("proxy", 9000, "http"));  

推荐阅读