在 JAVA 的 elasticsearch 高级客户端中添加身份验证

Posted

技术标签:

【中文标题】在 JAVA 的 elasticsearch 高级客户端中添加身份验证【英文标题】:Add authentication in elasticsearch high level client for JAVA 【发布时间】:2018-06-19 12:20:15 【问题描述】:

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

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

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

有没有人成功连接到具有高级休息客户端的安全弹性搜索?

干杯,

【问题讨论】:

【参考方案1】:

您可以指定 Java Low Level REST Client 的用户名和密码,并将 Low Level REST Client 传递给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);

参考资料:

https://www.elastic.co/guide/en/elasticsearch/client/java-rest/current/java-rest-high-getting-started-initialization.html https://www.elastic.co/guide/en/elasticsearch/client/java-rest/current/_basic_authentication.html

【讨论】:

如果我使用 search-guard 而不是 X-Pack,你能告诉我如何做同样的事情吗?

以上是关于在 JAVA 的 elasticsearch 高级客户端中添加身份验证的主要内容,如果未能解决你的问题,请参考以下文章

第07讲:Java操作之ElasticSearch高级查询

Elasticsearch - Java API 操作 ES7.15.0ES7.x 索引,文档;高级搜索

Elasticsearch Java高级REST客户端建立一堆TCP连接,并且在放入数据后不要关闭该连接

elasticsearch高级配置

ElasticSearch高级操作

Elasticsearch - Java API 操作 ES7.16.0+ES8.x 索引,文档;高级搜索