- 安裝Java:要求JDK爲1.8及以上版本。
- 建立阿里雲Elasticsearch實例:實例版本要求大於等於elasticsearch-rest-high-level-client的版本。本文建立一個6.3.2版本的實例。
注意 High Level Client可以向上兼容,例如6.3.2版本的elasticsearch-rest-high-level-client能確保與大於等於6.3.2版本的Elasticsearch集羣通訊。爲了保證最大程度地使用最新版客戶端的特性,推薦High Level Client版本與集羣版本一致。
- 建立Java Maven工程,並將以下的pom依賴添加到Java工程的pom.xml文件中。
說明 本文以Elasticsearch 6.3.2版本爲例。
pom依賴
<dependency> <groupId>org.elasticsearch.client</groupId> <artifactId>elasticsearch-rest-high-level-client</artifactId> <version>6.3.2</version> </dependency>
示例
如下示例使用Index API索引文檔,隨即便用Delete API刪除該文檔。html
//文件路徑爲:src/main/java/RestClientTest.java。 import org.apache.http.HttpHost; import org.apache.http.auth.AuthScope; import org.apache.http.auth.UsernamePasswordCredentials; import org.apache.http.client.CredentialsProvider; import org.apache.http.impl.client.BasicCredentialsProvider; import org.apache.http.impl.nio.client.HttpAsyncClientBuilder; import org.elasticsearch.action.delete.DeleteRequest; import org.elasticsearch.action.delete.DeleteResponse; import org.elasticsearch.action.index.IndexRequest; import org.elasticsearch.action.index.IndexResponse; import org.elasticsearch.client.RestClient; import org.elasticsearch.client.RestClientBuilder; import org.elasticsearch.client.RestHighLevelClient; import java.io.IOException; import java.util.HashMap; import java.util.Map; public class RestClientTest { public static void main(String[] args) { // 阿里雲ES集羣須要basic auth驗證。 final CredentialsProvider credentialsProvider = new BasicCredentialsProvider(); //訪問用戶名和密碼爲您建立阿里雲Elasticsearch實例時設置的用戶名和密碼,也是Kibana控制檯的登陸用戶名和密碼。 credentialsProvider.setCredentials(AuthScope.ANY, new UsernamePasswordCredentials("{訪問用戶名}", "{訪問密碼}")); // 經過builder建立rest client,配置http client的HttpClientConfigCallback。 // 單擊所建立的Elasticsearch實例ID,在基本信息頁面獲取公網地址,即爲ES集羣地址。 RestClientBuilder builder = RestClient.builder(new HttpHost("{ES集羣地址}", 9200)) .setHttpClientConfigCallback(new RestClientBuilder.HttpClientConfigCallback() { @Override public HttpAsyncClientBuilder customizeHttpClient(HttpAsyncClientBuilder httpClientBuilder) { return httpClientBuilder.setDefaultCredentialsProvider(credentialsProvider); } }); // RestHighLevelClient實例經過REST low-level client builder進行構造。 RestHighLevelClient highClient = new RestHighLevelClient(builder); try { // 建立request。 Map<String, Object> jsonMap = new HashMap<>(); // field_0一、field_02爲字段名,value_0一、value_02爲對應的值。 jsonMap.put("{field_01}", "{value_01}"); jsonMap.put("{field_02}", "{value_02}"); //index_name爲索引名稱;type_name爲類型名稱;doc_id爲文檔的id。 IndexRequest indexRequest = new IndexRequest("{index_name}", "{type_name}", "{doc_id}").source(jsonMap); // 同步執行。 IndexResponse indexResponse = highClient.index(indexRequest); long version = indexResponse.getVersion(); System.out.println("Index document successfully! " + version); //index_name爲索引名稱;type_name爲類型名稱;doc_id爲文檔的id。與以上建立索引的名稱和id相同。 DeleteRequest request = new DeleteRequest("{index_name}", "{type_name}", "{doc_id}"); DeleteResponse deleteResponse = highClient.delete(request); System.out.println("Delete document successfully!"); highClient.close(); } catch (IOException ioException) { // 異常處理。 } } }