1、ES7版本變化
- 廢棄了type,沒有類型的概念;
- 廢棄TransportClient,只能使用restclient。
2、Maven依賴
連接客戶端主要有Rest Low Level Client和Rest High Level Client兩種可以使用,兩者的主要區別在於:
Rest Low Level Client:低級別的REST客戶端,通過http與集群交互,用戶需自己編組請求JSON串,及解析響應JSON串。兼容所有ES版本。最小Java版本要求為1.7。
Rest High Level Client:高級別的REST客戶端,基於低級別的REST客戶端,增加了編組請求JSON串、解析響應JSON串等相關api。使用的版本需要保持和ES服務端的版本一致,否則會有版本問題。
我選擇使用的是Rest High Level Client,在pom.xml中添加依賴(我使用的是ES7.4.2,所以這里使用同版本的client客戶端):
<dependency>
<groupId>org.elasticsearch</groupId>
<artifactId>elasticsearch</artifactId>
<version>7.4.2</version>
</dependency>
<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>elasticsearch-rest-high-level-client</artifactId>
<version>7.4.2</version>
</dependency>
3、連接到集群
public static RestHighLevelClient getClient() {
RestHighLevelClient client = new RestHighLevelClient(
RestClient.builder(new HttpHost("localhost",9200,"http")));
return client;
}
通過上面的代碼就可以連接到集群,再通過獲取已經建好的集群內的一個文檔來看看是否連接成功。
public static void main(String args[]) throws IOException { RestHighLevelClient client = getClient(); GetRequest getRequest = new GetRequest( "news", "1"); GetResponse getResponse=client.get(getRequest, RequestOptions.DEFAULT); String index = getResponse.getIndex(); String id = getResponse.getId(); System.out.println(index); System.out.println(id); if (getResponse.isExists()) { long version = getResponse.getVersion(); System.out.println(version); String sourceAsString = getResponse.getSourceAsString(); System.out.println(sourceAsString); Map<String, Object> sourceAsMap = getResponse.getSourceAsMap(); byte[] sourceAsBytes = getResponse.getSourceAsBytes(); } else { System.out.println(false); } }