java操作需要用戶名密碼驗證的elasticsearch

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操作的相關文檔。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章