elasticsearch - 通过代理在企业防火墙后面的 Elasticsearch RestHighLevelClient
问题描述
我正在尝试从我们的网络访问云 Elasticsearch 安装,这需要使用代理来处理外部请求。这是我用来传递 Elasticsearch 凭据和代理设置的代码片段:
CredentialsProvider credentialsProvider = new BasicCredentialsProvider(); credentialsProvider.setCredentials(AuthScope.ANY, new UsernamePasswordCredentials(elasticUser, elasticPassword));
RestClientBuilder restClientBuilder = RestClient.builder(new HttpHost(hostName,port,"https")).setHttpClientConfigCallback(httpClientBuilder -> httpClientBuilder.setDefaultCredentialsProvider(credentialsProvider)).setHttpClientConfigCallback(httpClientBuilder -> httpClientBuilder.setProxy(new HttpHost(proxyURL", proxyPort, “http”)));
RestHighLevelClient 客户端 = new RestHighLevelClient(restClientBuilder);
这导致来自 ES 的响应:
“线程“主”中的异常 ElasticsearchStatusException [Elasticsearch 异常 [type=security_exception,reason=action [indices:data/read/search] 需要身份验证]]”
似乎由于某种原因没有通过 Elasticsearch 凭据。
解决方案
应该这样做:
RestClientBuilder restClientBuilder = RestClient.builder(new HttpHost(hostName, port, "https"))
.setHttpClientConfigCallback(clientBuilder -> {
clientBuilder.setDefaultCredentialsProvider(credentialsProvider);
clientBuilder.setProxy(new HttpHost(proxyURL, proxyPort, "http"));
return clientBuilder;
});
推荐阅读
- php - file_get_contents 不在服务器上工作,但在 localhost 和 allow_url_fopen 上工作
- c# - 通过按钮统一打开 PDF 文件时出错
- asp.net-mvc - Dotnet 核心——如何转换 Queryable
在下拉列表中使用 SelectList? - python - 将 ipywidgets.widgets.widget_output.Output 转换为列表
- html - html5 链接加载当前页面:语法问题?
- ios - 有没有办法在模拟器内自动登录 Apple ID 帐户以供 iCloud 使用?
- javascript - sequelize query findAll using multiple constraints in where arg
- celery - 如何在不将worker_enable_remote_control设置为True的情况下暂停/恢复celery worker消费新任务
- mysql - 错误代码 1452。无法添加或更新子行:外键约束失败,
- java - 当用户设备上线时如何发送我的数据