java - 在 Java 的 elasticsearch 高级客户端中添加身份验证

标签 java authentication elasticsearch

我在使用 X-PACK 保护的弹性云实例中使用 Elasticsearch 实例。

我之前一直在使用高级 rest 客户端,没有任何问题,但我无法找到如何在其上发送基本身份验证 header 。

我曾尝试将凭据作为 URL 的一部分,但在那种情况下似乎无法连接。

有没有人成功连接到具有高级 rest 客户端的安全 Elasticsearch ?

最佳答案

您可以为 Java 低级 REST 客户端指定用户名和密码,并将低级 REST 客户端传递给 RestHighLevelClient 实例。

final CredentialsProvider credentialsProvider = new BasicCredentialsProvider();
credentialsProvider.setCredentials(AuthScope.ANY,
        new UsernamePasswordCredentials("user", "password"));

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

RestHighLevelClient client = new RestHighLevelClient(builder);

引用资料:

关于java - 在 Java 的 elasticsearch 高级客户端中添加身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48185570/

相关文章:

java - 从备份恢复数据库后无法连接到数据库

wcf - 如何使用 Delphi XE 发送 WCF 的 ClientCredentials

Elasticsearch - 启用字段的全文搜索

elasticsearch - 在 Elastic Search 中将嵌套查询与 bool 查询相结合

ruby-on-rails - 检查用户是否已在设计中注销

elasticsearch - Elasticsearch自定义分析器,带有ngram并且在连字符上没有单词定界符

java - 如何制作改变应用程序语言的微调器(在 fragment 中)?

java - 二维数组中最有值(value)的图?

java - MVP 中的 Android NFC 阅读器 - onNewIntent 未触发

java - 无法创建文件,因为文件不存在