最近有项目用到Elasticsearch,一开始不需要用户名密码验证,操作起来倒挺简单,后来加了密码验证便不知如何操作了.在网上找了许多资料,发现大多不好用,最后找呀找呀还是被我找到了,就在这里记录下吧.
引入相关maven依赖
<dependency>
<groupId>org.elasticsearch</groupId>
<artifactId>elasticsearch</artifactId>
<version>5.6.6</version>
</dependency>
<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>elasticsearch-rest-high-level-client</artifactId>
<version>6.2.3</version>
</dependency>
创建带用户名密码的ES客户端对象
//初始化ES操作客户端
final CredentialsProvider credentialsProvider = new BasicCredentialsProvider();
credentialsProvider.setCredentials(AuthScope.ANY,
new UsernamePasswordCredentials("elastic", "123456")); //es账号密码(默认用户名为elastic)
RestHighLevelClient esClient =new RestHighLevelClient(
RestClient.builder(
new HttpHost("127.0.0.1",9200)
).setHttpClientConfigCallback(new RestClientBuilder.HttpClientConfigCallback() {
public HttpAsyncClientBuilder customizeHttpClient(HttpAsyncClientBuilder httpClientBuilder) {
httpClientBuilder.disableAuthCaching();
return httpClientBuilder.setDefaultCredentialsProvider(credentialsProvider);
}
})/*.setMaxRetryTimeoutMillis(2000)*/
);
这里生成的esClient对象就可以用于es的相关操作了,下面给出一个Demo代码
public class ESTest {
private static RestHighLevelClient esClient = null;
static {
//初始化ES操作客户端
final CredentialsProvider credentialsProvider = new BasicCredentialsProvider();
credentialsProvider.setCredentials(AuthScope.ANY,
new UsernamePasswordCredentials("elastic", "123456")); //es账号密码
esClient =new RestHighLevelClient(
RestClient.builder(
new HttpHost("127.0.0.1",9200)
).setHttpClientConfigCallback(new RestClientBuilder.HttpClientConfigCallback() {
public HttpAsyncClientBuilder customizeHttpClient(HttpAsyncClientBuilder httpClientBuilder) {
httpClientBuilder.disableAuthCaching();
return httpClientBuilder.setDefaultCredentialsProvider(credentialsProvider);
}
})/*.setMaxRetryTimeoutMillis(2000)*/
);
}
public static void main(String[] args) throws Exception{
index();
}
static void index() throws Exception{
GetRequest getRequest = new GetRequest("test","testType","100");
GetResponse response = esClient.get(getRequest);
System.out.println(response.getId());
}
}
具体操作方式可以查找Java High Level REST Client对ES操作的相关文档。