我想连接我的安全 ElasticSearch
并加载我的索引数据并将其存储在变量中。我在 java
中找到了 RestHighLevelClient
,它帮助我连接了 Elasticsearch 。
代码如下:
import org.apache.http.HttpHost;
import org.elasticsearch.client.ElasticsearchClient;
import org.elasticsearch.client.RestClient;
import org.elasticsearch.client.RestHighLevelClient;
public class ESConnect {
public static void main(String[] args){
RestHighLevelClient client = new RestHighLevelClient(RestClient.builder(new HttpHost("localhost", 9200, "http")));
System.out.println(client);
}
}
Maven 依赖关系:
<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>elasticsearch-rest-high-level-client</artifactId>
<version>7.5.2</version>
</dependency>
但是我的 ElasticSearch
受到用户名
和密码
的保护。 Httphost
没有用户名
和密码
参数。我找到了这个Secure connection using transport client 。但没有正确的答案来连接安全的ElasticSearch
。所以我不知道如何使用 java 连接我的安全 Elasticsearch 。接下来,我在 ElasticSearch
中有一个名为 football_data
的索引
。我想使用 java
加载索引数据并将其存储在变量中。帮助我连接到安全的 elasticSearch
并使用 java
加载索引数据。请提供一些解决方案。
最佳答案
由 Elasticsearch 创建 docs 。你应该推荐他们。现在执行以下操作...
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);
现在,为了获取数据,您必须使用您想要的查询创建一个 searchRequest (我认为如果数据超过 10000,匹配查询将使用滚动 api 进行)。关注此link .
关于java - 使用 java 连接到安全 Elastic Search,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60182233/