# easy-es-springboot-demo **Repository Path**: zwh_9527/easy-es-springboot-demo ## Basic Information - **Project Name**: easy-es-springboot-demo - **Description**: easy-es开源框架封装的elasticsearch操作demo 基于 RestHighLevelClient 客户端的二次封装 fork from https://gitee.com/easy-es/easy-es-springboot-demo.git - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-09-05 - **Last Updated**: 2024-09-05 ## Categories & Tags **Categories**: Uncategorized **Tags**: ElasticSearch ## README # easy-es-springboot-demo fork from https://gitee.com/easy-es/easy-es-springboot-demo.git #### 介绍 springboot集成easy-es使用demo #### 软件架构 软件架构说明 ### 注意事项 强烈建议采用推荐方式,直接在实体类加一行 private String id 即可,不要画蛇添足,如果你真期望在es中检索mysql库中对应数据的id,不妨另起一列,按推荐方式3写. 因为如果你强行用mysql或其它算法生成的id作为es的_id,此时插入数据时es会在所有分片上计算该id是否具备唯一性,这个过程随着数据量的大小,会对服务有致命影响, 并且强烈推荐不要使用es的_id进行排序,这也会容易导致OOM,原因类似,es官方也不推荐你这么做,但你可以像推荐方式3一样新加一行keyword类型索引字段,比如叫mysqlId, 通过该新增的字段进行CRUD及排序等各种操作,此时性能就不会受影响了,总之记住,id就用es自己生成的,不建议自己玩花活. 在调用insert方法时,如果该id数据在es中不存在,则新增该数据,如果已有该id数据,则即便你调用的是insert方法,实际上的效果也是更新该id对应的数据,这点需要区别于MP和MySQL. ### 项目中同时使用Mybatis-Plus和Easy-Es 在此场景下,您需要将MP的mapper和EE的mapper分别放在不同的目录下,并在配置扫描路径时各自配各自的扫描路径,如此便可共存使用了,否则两者在SpringBoot启动时都去扫描同一路径,并尝试注册为自己的bean,由于底层实现依赖的类完全不一样,所以会导致其中之一注册失败,整个项目无法正常启动.可参考下图: ### 特别注意 由于springboot内置关联了es版本,不同的springboot版本会导致实际项目中引入的es依赖版本过低或过高, 而es不同版本兼容性比较差,很多用户踩到一些因依赖冲突而导致兼容问题的坑,在此特地提醒用户,如果您项目实际依赖的es版本不为 7.14.0版本,我们强烈建议您显示指定es依赖jar包版本为7.14.0,与我们底层使用的es依赖版本保持一致,如此兼容性最佳, 不易踩坑. 底层之所以采用7.14.0也是经过多方调研,选择了一个稳定无安全漏洞的版本,经墨菲扫描该版本安全可靠. 至于ES客户端版本,7.10+实测兼容性都非常出色,依赖中的jar包版本与客户端版本不匹配无妨,重点是依赖的Jar版本 #### 安装教程 1. xxxx 2. xxxx 3. xxxx #### 使用说明 1. 添加依赖 2. 配置文件 ``` easy-es: enable: true #默认为true,若为false则认为不启用本框架 address : 127.0.0.1:9200 # es的连接地址,必须含端口 若为集群,则可以用逗号隔开 例如:127.0.0.1:9200,127.0.0.2:9200 username: elastic #若无 则可省略此行配置 password: WG7WVmuNMtM4GwNYkyWH #若无 则可省略此行配置 ``` 3. 启动类配置扫描包路径 ``` @SpringBootApplication @EsMapperScan("com.xpc.easyes.sample.mapper") public class Application ``` 4. 手动创建索引(相当于数据库中创建表结构),参考:EeUseApplicationTests.testCreateIndex() #### 参与贡献 1. Fork 本仓库 2. 新建 Feat_xxx 分支 3. 提交代码 4. 新建 Pull Request #### 特技 1. 使用 Readme\_XXX.md 来支持不同的语言,例如 Readme\_en.md, Readme\_zh.md 2. Gitee 官方博客 [blog.gitee.com](https://blog.gitee.com) 3. 你可以 [https://gitee.com/explore](https://gitee.com/explore) 这个地址来了解 Gitee 上的优秀开源项目 4. [GVP](https://gitee.com/gvp) 全称是 Gitee 最有价值开源项目,是综合评定出的优秀开源项目 5. Gitee 官方提供的使用手册 [https://gitee.com/help](https://gitee.com/help) 6. Gitee 封面人物是一档用来展示 Gitee 会员风采的栏目 [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/)