github site:https://github.com/foolchild/record-elasticsearch
1.elasticsearch的版本
2.java客戶端的變遷
3.具體使用RestHighLevelClient
1.elasticsearch的版本
簡單說一下我使用中感受到的變化
5.x 支持多種type
6.x 只能有一種type
7.x 將去除type 沒有類型的概念了
7.X TransportClient被廢棄,只能使用restclient。
在es7中使用默認的_doc作為type,官方說在8.x版本會徹底移除type。
2.java客戶端的變遷
2.1 transportClient
關於TransportClient,elastic計划在Elasticsearch 7.0中棄用TransportClient,並在8.0中完全刪除它。這里就不過多記錄。
2.2 Rest Low Level Client
Java Low Level REST Client,低級別的REST客戶端,通過http與集群交互,用戶需自己編組請求JSON串,及解析響應JSON串。兼容所有ES版本。最小Java版本要求為1.7。
<dependency> <groupId>org.elasticsearch.client</groupId> <artifactId>elasticsearch-rest-client</artifactId> <version>6.2.4</version> </dependency
2.3 Rest High Level Client
Java High Level REST Client, 高級別的REST客戶端,基於低級別的REST客戶端,增加了編組請求JSON串、解析響應JSON串等相關api。使用的版本需要保持和ES服務端的版本一致,否則會有版本問題。(不知道以后會不會有best level 或者 highest。。。)
<dependency> <groupId>org.elasticsearch.client</groupId> <artifactId>elasticsearch-rest-high-level-client</artifactId> <version>6.2.4</version> </dependency>
3.具體使用RestHighLevelClient
3.1 兼容性
- 依賴 java1.8
- 請使用與服務端ES版本一致的客戶端版本
3.2 連接
public class RestClient_test { public RestHighLevelClient getClient() { RestHighLevelClient client = new RestHighLevelClient( RestClient.builder(new HttpHost("localhost", 9200, "http"), new HttpHost("localhost", 9201, "http"))); return client; } }
3.3 關於操作
在項目中有相關代碼,這里偷個懶
至此,elasticsearch連接完成,后續的查詢操作內容龐大,一時講述不清,后續更新。