2018年二季度的时候,Elasticsearch 更新到6.2版本,如果准备在生产环境使用es,推荐使用较老的5.6.x版本或2.x版本,一方面比较稳定、另外资料也比较多.
如果要在Java中开发es,你很可能会使用Spring Boot全家桶,如果Spring Boot更新到2.x版本,默认spring-boot-starter-data-elasticsearch
默认的ES版本为5.6.9;如果你仍然使用Spring Boot 1.x版本,那么默认的Elasticsearch版本为2.x.
ES的Java客户端中,目前有三种可选的技术栈, Node Client,Transport Client,Rest API.
注意:官方已经表明 NodeClient过期;Transport Client 将在7.x版本开始不再支持,最终会在7.x 统一到Rest API.目前Transport Client使用范围比较广,Rest API方式兼容性较好,除非在In-memory模式下运行单元测试,否则不推荐NodeClient.
二. 单测测试如果能使用in-memory 这种方式,那么可以很轻松保证可重测性,很可惜的是Elasticsearch 5.x版本开始,官方已经开始不证支持im-memory这种方式,而且从Spring Boot官方文档来看,Spring Boot 2.x版本的文档中已经去掉了In memory这种方式的描述.
三. 升级和迁移-
2.x版本数据可以直接迁移到 5.x;
-
5.X版本的数据可以直接迁移到6.x;
-
但是2.x版本数据无法直接迁移到6.x.
-
1️⃣. Java技术栈,
spring-boot-starter-data-elasticsearch
支持in-memory方式启动,单元测试开箱即用; -
2️⃣. 当前线上运行的主流版本,比较稳定.
-
1️⃣. 版本较老,无法体验新功能,且性能不如5.x;
-
2️⃣. 后期升级数据迁移比较麻烦;
-
3️⃣. 周边工具版本比较混乱,Kibana等工具的对应版本需要自己查.
-
1️⃣. 版本相对较新,性能较好.官方宣称索引吞吐量提升在25%到80%之间,新的数据结构用于存储数值和地理位置字段,性能大幅提升. 5.x版本搜索进行了重构,搜索聚合能力大幅提高;
-
2️⃣. 周边工具比较全,版本号比较友好. ES官方在5.x时代统一了 ELK体系的版本号.
-
3️⃣. 升级到6.x也比较方便.
1️⃣. 官方宣布已不支持In-Memory模式,Node Client也已失效.如果需要使用in-memory方式单测,需要自己手动配置ES版本和spring-data-elasticsearch版本,打开http访问开关等配置,并行使用REST API访问.