SpringBoot集成Easy-Es的實戰(zhàn)操作指南
一、Easy ES 簡介
Easy ES(簡稱EE)是一款基于 Elasticsearch 官方 RestHighLevelClient 封裝的 ORM 框架,提供類似 MyBatis-Plus 的 API 設計,可以幫助開發(fā)者更簡單地集成和使用 Elasticsearch,讓操作 Elasticsearch 變得更加方便和高效,大大降低了 Elasticsearch 操作復雜度。
二、環(huán)境準備
1. 依賴引入
<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>elasticsearch-rest-high-level-client</artifactId>
<version>7.17.19</version>
</dependency>
<dependency>
<groupId>org.dromara.easy-es</groupId>
<artifactId>easy-es-boot-starter</artifactId>
<version>2.0.0</version>
</dependency>
2. 增加配置
# application.yml
easy-es:
enable: true
address: 127.0.0.1:9200
username: admin
password: 123456
# 可選配置
global-config:
print-dsl: true # 打印DSL語句
async-process-index-blocking: true # 自動托管索引
三、核心功能集成
1. 新增 Mapper
自定義一個 Mapper,并繼承 BaseEsMapper
public interface MyEsCollectionMapper extends BaseEsMapper<MyCollection> {
}
2. 指定索引
在 Collection 中,需要指定和 ES 交互的索引 key
@Data
@IndexName(value = "my_collection")
public class MyCollection extends BaseEntity {
/**
* 姓名
*/
private String name;
// 其他字段
}
3. 在啟動類上添加 ES 的 Mapper 掃描配置
@EsMapperScan("cn.feizhu.jgs.*.infrastructure.es.mapper")
4. 使用 Easy ES 進行查詢
@Component
public class MyEsCollectionMapperTest {
@Resource
private MyEsCollectionMapper myEsCollectionMapper;
@Test
public void test(){
LambdaEsQueryWrapper<MyCollection> queryWrapper = new LambdaEsQueryWrapper<>();
queryWrapper.match(MyCollection::getName, "會飛的我")
.and(wrapper -> wrapper
.match(MyCollection::getIsDeleted, true));
EsPageInfo<MyCollection> results = myEsCollectionMapper.pageQuery(queryWrapper, 1, 10);
}
}
四、Easy ES 的用法
1.基礎 CRUD 示例
@Service
public class ArticleService {
@Resource
private ArticleMapper articleMapper;
// 新增文檔
public Boolean addArticle(Article article) {
return articleMapper.insert(article) > 0;
}
// 條件查詢
public List<Article> searchByKeyword(String keyword) {
LambdaEsQueryWrapper<Article> wrapper = new LambdaEsQueryWrapper<>();
wrapper.match(Article::getContent, keyword);
return articleMapper.selectList(wrapper);
}
// 更新文檔
public Boolean updateAuthor(String id, String newAuthor) {
Article article = new Article();
article.setId(id);
article.setAuthor(newAuthor);
return articleMapper.updateById(article) > 0;
}
// 刪除文檔
public Boolean deleteArticle(String id) {
return articleMapper.deleteById(id) > 0;
}
}
2.分頁查詢
public PageInfo<Article> searchPage(String keyword, int pageNum, int pageSize) {
LambdaEsQueryWrapper<Article> wrapper = new LambdaEsQueryWrapper<>();
wrapper.match(Article::getTitle, keyword)
.orderByDesc(Article::getCreateTime);
return articleMapper.pageQuery(wrapper, pageNum, pageSize);
}
3. 復雜布爾查詢
public List<Article> complexQuery(String author, Date startDate) {
LambdaEsQueryWrapper<Article> wrapper = new LambdaEsQueryWrapper<>();
wrapper.eq(Article::getAuthor, author)
.ge(Article::getCreateTime, startDate)
.or()
.match(Article::getContent, "技術");
return articleMapper.selectList(wrapper);
}
4. 高亮顯示
public List<Article> searchWithHighlight(String keyword) {
LambdaEsQueryWrapper<Article> wrapper = new LambdaEsQueryWrapper<>();
wrapper.match(Article::getContent, keyword)
.highLight(Article::getContent,
"<em>", "</em>", 100);
return articleMapper.selectList(wrapper);
}
5. 開啟自動創(chuàng)建索引的兩種方式
1.通過配置文件開啟(推薦)
# application.yml
easy-es:
global-config:
async-process-index-blocking: true # 自動托管索引(包含自動創(chuàng)建)
2.通過代碼配置(動態(tài)啟用)
@Configuration
public class EsConfig {
@Bean
public GlobalConfig globalConfig() {
GlobalConfig config = new GlobalConfig();
config.setAsyncProcessIndexBlocking(true); // 開啟索引自動托管
return config;
}
}
五、注意事項
索引管理:開啟auto-create-index后,首次插入數(shù)據(jù)時會自動創(chuàng)建索引
字段映射:ES 字段類型需與 Java 類型匹配,避免類型轉換異常
分詞器配置:中文搜索建議使用 ik 分詞器,需提前安裝插件
版本兼容:確保 ES 服務版本與 Easy ES 兼容(推薦ES 7.x+)
六、總結
通過 Easy ES 框架,我們可以:
- 減少約 80% 的 ES 操作代碼量
- 使用熟悉的 MyBatis-Plus 風格 API
- 支持自動索引托管等高級特性
- 保留原生 API 擴展能力
到此這篇關于SpringBoot集成Easy-Es的實戰(zhàn)操作指南的文章就介紹到這了,更多相關SpringBoot集成Easy-Es內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Spring AI框架結合Sentinel實現(xiàn)限流功能
這篇文章主要為大家詳細介紹了如何實現(xiàn)一個簡單的使用Spring AI框架結合Sentinel限流的功能,場景是一個智能客服系統(tǒng),感興趣的小伙伴可以了解下2025-06-06
Java連接Redis報錯:NoSuchElementException: Unable to&nb
這篇文章主要介紹了Java連接Redis報錯:NoSuchElementException: Unable to validate object的解決辦法,文中通過圖文講解的非常詳細,具有一定的參考價值,需要的朋友可以參考下2024-12-12
如何使用HttpClient發(fā)送java對象到服務器
這篇文章主要介紹了如何使用HttpClient發(fā)送java對象到服務器,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2019-11-11
springboot調用C#封裝的DLL文件中函數(shù)的實現(xiàn)那
本文主要介紹了在Spring Boot中集成C# DLL,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2025-07-07
SpringBoot使用JdbcTemplate訪問操作數(shù)據(jù)庫基本用法
這篇文章主要介紹了SpringBoot使用JdbcTemplate訪問操作數(shù)據(jù)庫基本用法,Spring對數(shù)據(jù)庫的操作在jdbc上s面做了深層次的封裝,使用spring的注入功能,可以把DataSource注冊到JdbcTemplate之中。下文詳細內容需要的小伙伴可以參考一下2022-02-02
Spring?Boot日志SLF4J和Logback示例詳解
這篇文章主要介紹了Spring?Boot日志SLF4J和Logback詳解,Logback相比于Log4j,性能提高了10倍以上的性能,占用的內存也變小了,并且文檔十分詳細,推薦使用Slf4j+Logback,需要的朋友可以參考下2023-07-07
Java Swing組件單選框JRadioButton用法示例
這篇文章主要介紹了Java Swing組件單選框JRadioButton用法,結合具體實例形式分析了Swing單選框JRadioButton的使用方法及相關操作注意事項,需要的朋友可以參考下2017-11-11
Java源碼解析阻塞隊列ArrayBlockingQueue功能簡介
今天小編就為大家分享一篇關于Java源碼解析阻塞隊列ArrayBlockingQueue功能簡介,小編覺得內容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧2019-01-01
spring security與corsFilter沖突的解決方案
這篇文章主要介紹了spring security與corsFilter沖突的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-11-11

