Easy-Es Easy-Es
💋首页
  • v3.0.0(当前版本)
  • What's New

    • What' s New In Easy-Es v3.0.0?
  • 历史版本

    • v1.x.x
    • v2.x.x
  • 升级指南

    • 升级到3.x.x说明
💖赞助
  • 开源社区
  • 周边好物
  • 项目PPT (opens new window)
  • 项目介绍
  • 项目成员
  • 参与贡献
加入社区讨论
谁在使用
  • Doc-Apis (opens new window)
  • 健身计划一键生成系统 (opens new window)
  • 极氪汽车
  • Vuepress-theme-vdoing (opens new window)
  • Gitee (opens new window)
  • GitCode (opens new window)
  • Github (opens new window)
  • 简体中文 (opens new window)
  • English (opens new window)

广告采用随机轮播方式显示 ❤️成为赞助商
💋首页
  • v3.0.0(当前版本)
  • What's New

    • What' s New In Easy-Es v3.0.0?
  • 历史版本

    • v1.x.x
    • v2.x.x
  • 升级指南

    • 升级到3.x.x说明
💖赞助
  • 开源社区
  • 周边好物
  • 项目PPT (opens new window)
  • 项目介绍
  • 项目成员
  • 参与贡献
加入社区讨论
谁在使用
  • Doc-Apis (opens new window)
  • 健身计划一键生成系统 (opens new window)
  • 极氪汽车
  • Vuepress-theme-vdoing (opens new window)
  • Gitee (opens new window)
  • GitCode (opens new window)
  • Github (opens new window)
  • 简体中文 (opens new window)
  • English (opens new window)
  • 快速入门

    • 简介
    • 适用场景
    • 顾虑粉碎
    • 避坑指南
    • 快速开始
    • springboot集成demo
    • spring集成指南
    • solon集成指南
    • 配置
    • 注解
  • 核心功能

    • 条件构造器

      • 条件构造器介绍
      • 索引条件构造器
      • 查询条件构造器
      • 更新条件构造器
    • 索引CRUD

      • 索引托管模式
      • 索引CRUD
    • 数据CRUD

      • 数据同步方案
      • 数据CRUD
    • 多数据源支持
      • 简介
      • 使用姿势
      • 拓展
    • 动态索引支持
    • 四大嵌套查询
    • 链式调用
  • 拓展功能

    • 混合查询
    • 原生查询
    • 分页查询
    • 嵌套类型
    • Join父子类型
    • 获取DSL语句
    • 执行DSL语句
    • 执行SQL语句
    • 自定义RequestOptions
    • 自定义default方法
  • 高阶语法

    • 查询字段过滤
    • 排序
    • 聚合查询
    • 分词&模糊匹配
    • 权重
    • 高亮查询
    • GEO地理位置查询
    • IP查询
  • 插件

    • 插件
    • 领域模型生成插件
  • 其它

    • 问答
    • 与MP差异
    • MySQL和EE语法对比
    • 更新日志
    • 更新计划
    • 版权
    • 鸣谢
  • v2.x文档
  • 核心功能
老汉
2024-01-21
目录

多数据源支持

# 简介

我们提供了和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...
1
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> {
}
1
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官网
    }
}

1
2
3
4
5
6
7
8
9
10
11
12
13

相比于上面这种方式,EE提供的开箱即用的查询和混合查询显然是最优解,可以帮您最大限度的减少代码量,若您需要指定查询某个数据源的指定索引,可移步一下章节,查看动态索引支持!

帮助我们改善此文档 (opens new window)
上次更新: 2025/05/11
数据CRUD
动态索引支持

← 数据CRUD 动态索引支持→

Theme by Vdoing | Copyright © 2021-2025 老汉 | 浙ICP备2022020479号 | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式