多数据源支持
# 简介
我们提供了和MP同款多数据源支持,基本上无额外学习和理解成本,如果您此前有接触过MP的多数据源,则此处您可简单了解即可使用,需要特别注意的是,我们采用了更加轻量化的解决方案,无需像MP那样在使用前要先引入多数据源插件, 直接配置使用即可,用起来更方便,另外考虑到MP用的是@DS(*丝)注解,为了区别于MP,在EasyEs中调整该注解为@EsDS(俄是 *丝).
# 使用姿势
步骤一: 配置文件中添加多数据源相关配置
easy-es:
dynamic:
datasource:
ds1:
address: 10.20.64.228:9200 #数据源1的连接地址
#username: '若无可去掉此行'
#password: '若无可去掉此行'
ds2:
address: 49.234.28.111:9200 #数据源2的连接地址
#username: '若无可去掉此行'
#password: '若无可去掉此行'
#dsn...
2
3
4
5
6
7
8
9
10
11
12
步骤二: 对应Mapper上加上@EsDS(俄是 *丝)注解
在涉及的Mapper上加上@EsDS注解,并在value中指明数据源名称,数据源名称为上面配置文件中加的ds1,ds2...,当然你也可以叫dds,xds...总之你期望的连接地址和注解中的value能对应上即可.
@EsDS("ds1")
public interface DocumentMapper extends BaseEsMapper<Document> {
}
@EsDS("ds2")
public interface CommentMapper extends BaseEsMapper<Comment> {
}
2
3
4
5
6
7
步骤三: 注入对应mapper进行查询
这个步骤比较简单,就当成普通mapper使用就行了,只不过相比之前的mapper,每个mapper都绑定了特定的数据源,此后通过该mapper进行的一系列CRUD操作都走的是注解指定的数据源.
# 拓展
由于EE目前的版本并未提供类似MP的xml(dsl也未必适合用xml来表达,目前仍再探索中)方式,而是通过开箱即用配合多维度的混合查询模式来满足所有场景下的使用,因此并不能把@EsDS注解加到具体方法上,但丝毫不影响用户使用,即便是出现了很灵活的场景,用户依旧可以用混合查询来搞定, 委托mapper完成CRUD,该mapper上的@EsDS指定的数据源既为混合查询时的对应的数据源,当然您还可以有其它极度灵活的选择方案,例如像下面这样,直接拿到框架装配好的RestHighLevelClient进行使用.
public class DsTest{
@Autowired
private RestHighLevelClientUtils restHighLevelClientUtils;
@Test
public void testDs(){
// 通过传入restHighLevelClientId来获取对应的RestHighLevelClient, RestHighLevelClientId即为配置文件中配置的数据源名称 ds1,ds2...
RestHighLevelClient restHighLevelClient = restHighLevelClientUtils.getClient(String restHighLevelClientId);
// 拿到了对应的RestHighLevelClient 剩下的该怎么做不用我说了吧,就是ES原生的RestHighLevelClient用法, 不会百度或看es官网
}
}
2
3
4
5
6
7
8
9
10
11
12
13
相比于上面这种方式,EE提供的开箱即用的查询和混合查询显然是最优解,可以帮您最大限度的减少代码量,若您需要指定查询某个数据源的指定索引,可移步一下章节,查看动态索引支持!