目标
框架以Jar包的形式提供,通过配置(XML)提供规则,支持插件开发,支持全量、增量等。
因为希望尽量减少开发量,所以不要求使用方提供平表,因此需要考虑如何将平表
概念全量:即使用全部数据创建一个新的索引
增量:按照时间范围或者给定的规则,把变化的数据同步到ES
插件:本框架内定义了一个插件接口,用于特定需求自行开发,并接入到现有的配置文件中
分批参数:SQL中由框架填充的参数,类似${id}等
配置
以用户(users)为例,配置有三种文件:users.mapping,保存了索引的配置,每次全量的时候会读取本文件进行索引创建
rule,规则文件,里面主要定义了对应SQL和插件的配置users-all.rule,全量规则,规则中以主表为主体,支持以Top、Limit的形式对数据进行分批获取,分批参数在SQL里可以定义为${id},框架会自动填充该值,以保证能够拉取到全量的数据
users-inc.rule,按照时间范围进行增量,分批参数支持在SQL中使用${startTime}和${endTime}
users-spec.rule,按照指定的主表的主键,获取数据及更新索引的操作
users-partial.rule,框架接入了阿里的Canal,本规则定义了各种表变化时,如果取到主表Id,以使用spec进行数据更新
users.plugin,以上的rule主要提供了主表数据的获取方法,