ElasticSearch 应用开发Transport Client和Rest Client网络协议

Elasticsearch计划在Elasticsearch 7.0中弃用TransportClient,在8.0中完全删除它。故在实际使用过程中建议您使用Java高级REST client。Rest client执行HTTP请求来执行操作,无需再序列化的Java请求。

TransportClient:java客户端的方式是以TCP协议在9300端口上进行通信:

java transportClient api提供了Query Builder来协助构建查询对象;

基于java api封装的orm框架,封装比较死板,不太灵活,兼容性差,不能像调用restful那样直接操作query dsl,所以也不能直接针对query dsl,在head插件或者kibana里面调试和调优query dsl,写出了query dsl还要想方设法转换成对应的java api的调用方式。

RestClient:http客户端的方式是以http协议在9200端口上进行通信,

http则需要自己在代码里拼JSON DSL;

基于restful的,直接操作各种restful api和query dsl,比较简单,没有orm功能;

网络

TransportClient基于TCP协议、Rest Client 基于Http协议;

从计算机网络方面看TCP协议在传输层、Http协议在应用层;

线程池

不管是transport client还是rest client都是线程安全的,都应该使用单例。

原文地址:https://www.cnblogs.com/chong-zuo3322/p/13428068.html