java访问elasticsearch使用java api还是直接使用http协议访问端口方式

最近在学习elasticsearch。发现使用http协议访问9200端口的方式创建索引或者查询数据比使用java api更加方便,于是在想,java项目集成elasticsearch的时候直接使用http方式来连接elastic还是使用java api更好一些。小白求解答,谢谢各位大神
已邀请:

kennywu76 - wood@Ctrip

赞同来自: little_heart famoss ELKer

java transport api提供了Query Builder来协助构建查询对象,而http则需要自己在代码里拼JSON DSL,从程序员角度来说, java transport api更显得更加友好,并且性能也要比http稍好。
 
但java transport api也有如下弊病:
1. 第三方依赖包比较多,如果应用还要集成其他一些框架和组件,容易产生依赖冲突,解决起来比较麻烦。 
2. client版本必须和ES服务端版本一致,否则容易产生兼容性问题。 
3. client端JAVA版本也需要和Server端保持一致,否则也可能产生兼容性问题。
4. client端的环境和版本需要和server端保持一致这个要求,使得client/server端运行环境强耦合,导致ES Server端很难独立升级。
 
官方的roadmap也指明,未来java transport api会被取消,建议使用rest client。

DK

赞同来自:

可以看看 https://github.com/searchbox-io/Jest ,基于rest api来封装的。spring有推荐

要回复问题请先登录注册