Easy-Es傻瓜級(jí) ElasticSearch 搜索引擎 ORM 框架
為簡(jiǎn)化開發(fā)工作、提高生產(chǎn)效率而生
Easy-Es是一款簡(jiǎn)化 ElasticSearch 搜索引擎操作的開源框架,全自動(dòng)智能索引托管。
目前功能豐富度和易用度及性能已全面領(lǐng)先SpringData-Elasticsearch.
簡(jiǎn)化CRUD及其它高階操作,可以更好的幫助開發(fā)者減輕開發(fā)負(fù)擔(dān)
底層采用Es官方提供的RestHighLevelClient,保證其原生性能及拓展性.
項(xiàng)目推廣初期,還望大家能夠不吝點(diǎn)點(diǎn)三連:?Star,??Watch,fork??
支持一下國(guó)產(chǎn)開源,讓更多人看到和使用本項(xiàng)目,非常感謝!
優(yōu)點(diǎn) | Advantages
- 全自動(dòng)索引托管: 全球開源首創(chuàng)的索引托管模式,開發(fā)者無(wú)需關(guān)心索引的創(chuàng)建更新及數(shù)據(jù)遷移等繁瑣步驟,索引全生命周期皆可托管給框架,由框架自動(dòng)完成,過(guò)程零停機(jī),用戶無(wú)感知,徹底解放開發(fā)者
- 屏蔽語(yǔ)言差異: 開發(fā)者只需要會(huì)MySQL語(yǔ)法即可使用Es
- 代碼量極少: 與直接使用RestHighLevelClient相比,相同的查詢平均可以節(jié)3-8倍左右的代碼量
- 零魔法值: 字段名稱直接從實(shí)體中獲取,無(wú)需輸入字段名稱字符串這種魔法值
- 零額外學(xué)習(xí)成本: 開發(fā)者只要會(huì)國(guó)內(nèi)最受歡迎的Mybatis-Plus語(yǔ)法,即可無(wú)縫遷移至Easy-Es
- 降低開發(fā)者門檻: 即便是只了解ES基礎(chǔ)的初學(xué)者也可以輕松駕馭ES完成絕大多數(shù)需求的開發(fā)
- 功能強(qiáng)大: 支持MySQL的幾乎全部功能,且對(duì)ES特有的分詞,權(quán)重,高亮,嵌套,地理位置Geo,Ip地址查詢等功能都支持
- 安全可靠: 墨菲安全掃描零風(fēng)險(xiǎn),且代碼單元測(cè)試綜合覆蓋率高達(dá)95%以上.
- 完善的中英文文檔: 提供了中英文雙語(yǔ)操作文檔,文檔全面可靠,幫助您節(jié)省更多時(shí)間
- ...
對(duì)比 | Compare
需求:查詢出文檔標(biāo)題為 "傳統(tǒng)功夫"且作者為"碼保國(guó)"的所有文檔
// 使用Easy-Es僅需1行代碼即可完成查詢
List<Document> documents = documentMapper.selectList(EsWrappers.lambdaQuery(Document.class).eq(Document::getTitle, "傳統(tǒng)功夫").eq(Document::getCreator, "碼保國(guó)"));
// 傳統(tǒng)方式, 直接用RestHighLevelClient進(jìn)行查詢 需要19行代碼,還不包含下劃線轉(zhuǎn)駝峰,自定義字段處理及_id處理等代碼
String indexName = "document";
SearchRequest searchRequest = new SearchRequest(indexName);
BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();
TermQueryBuilder titleTerm = QueryBuilders.termQuery("title", "傳統(tǒng)功夫");
TermsQueryBuilder creatorTerm = QueryBuilders.termsQuery("creator", "碼保國(guó)");
boolQueryBuilder.must(titleTerm);
boolQueryBuilder.must(creatorTerm);
SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
searchSourceBuilder.query(boolQueryBuilder);
searchRequest.source(searchSourceBuilder);
try {
SearchResponse searchResponse = restHighLevelClient.search(searchRequest, RequestOptions.DEFAULT);
List<Document> documents = Optional.ofNullable(searchResponse)
.map(SearchResponse::getHits)
.map(SearchHits::getHits)
.map(hit->Document document = JSON.parseObject(hit.getSourceAsString(),Document.class))
.collect(Collectors.toList());
} catch (IOException e) {
e.printStackTrace();
}
- 以上只是簡(jiǎn)單查詢演示,實(shí)際使用場(chǎng)景越復(fù)雜,效果就越好,平均可節(jié)省至少3-8倍代碼量
- 傳統(tǒng)功夫,點(diǎn)到為止! 上述功能僅供演示,僅為Easy-Es支持功能的冰山一角,Easy-Es就是這么Easy到不講武德??,不用的請(qǐng)耗子尾汁.
官網(wǎng)地址 | Official website
easy-es官網(wǎng) https://easy-es.cn/
開源社區(qū)dromara https://dromara.org/
開源社區(qū)碼云首頁(yè) https://gitee.com/dromara/
Tip: 官網(wǎng)是vue單頁(yè)面應(yīng)用,首次訪問加載可能比較慢??,主公們請(qǐng)耐心等待一下,后續(xù)會(huì)很快??,如偶遇打不開可刷新多嘗試幾次.
架構(gòu) | Architecture
相關(guān)鏈接 | Links
Latest Version:
Maven:
<dependency> <groupId>cn.easy-es</groupId> <artifactId>easy-es-boot-starter</artifactId> <version>Latest Version</version> </dependency>
Gradle:
compile group: 'cn.easy-es', name: 'easy-es-boot-starter', version: 'Latest Version'
其他開源項(xiàng)目 | Other Project
期望 | Futures
歡迎提出更好的意見,幫助完善 Easy-Es
版權(quán) | License
捐贈(zèng) | Donate
您的支持是鼓勵(lì)我們前行的動(dòng)力,無(wú)論金額多少都足夠表達(dá)您這份心意。
如果您愿意捐贈(zèng)本項(xiàng)目,推薦直接在右下方通過(guò)Gitee直接捐贈(zèng).
關(guān)注我 | About Me
評(píng)論
圖片
表情
