ES目前有4種客戶端:Jest client、Rest client、Transport client、Node client
Transport client、Node client都是通過9300端口,使用 Elasticsearch 的原生 傳輸 協議和集群交互。(集群交互的端口都是通過9300)
Transport client是不需要單獨一個節點,脫離在集群之外。
Node client需要單獨建立一個節點,連接該節點進行操作,該節點不能存儲數據,也不能成為主節點。
Transport client(7.0棄用)
Node client(2.3棄用)
Jest:第三方客戶端
使用廣泛
ES集群使用不同的ES版本,使用原生ES API會有問題,而Jest不會;
<dependency>
<groupId>io.searchbox</groupId>
<artifactId>jest</artifactId>
<version>5.3.3</version>
</dependency>
ES提供了兩個JAVA REST client 版本
Java Low Level REST Client: 低級別的REST客戶端,通過http與集群交互,用戶需自己編組請求JSON串,及解析響應JSON串。兼容所有ES版本。
Java High Level REST Client: 高級別的REST客戶端,基於低級別的REST客戶端,增加了編組請求JSON串、解析響應JSON串等相關api。使用的版本需要保持和ES服務端的版本一致,否則會有版本問題。
<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>elasticsearch-rest-client</artifactId>
<version>6.4.0</version>
</dependency>
<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>elasticsearch-rest-high-level-client</artifactId>
<version>6.4.0</version>
</dependency>
JestClient兼容性優於其他兩者,Java High Level REST Client設置了默認調優參數,若版本匹配,其性能會更加優秀。