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设置了默认调优参数,若版本匹配,其性能会更加优秀。