java操作需要用戶名密碼驗證的elasticsearch
最近有項目用到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操作的相關文檔。