從零開始學YC-Framework之EasyES

語言: CN / TW / HK

一、EasyES是什麼?

Easy-Es(簡稱EE)是一款基於ElasticSearch(簡稱Es)官方提供的RestHighLevelClient打造的ORM開發框架,在 RestHighLevelClient 的基礎上,只做增強不做改變,為簡化開發、提高效率而生,您如果有用過Mybatis-Plus(簡稱MP),那麼您基本可以零學習成本直接上手EE,EE是MP的Es平替版,在有些方面甚至比MP更簡單,同時也融入了更多Es獨有的功能,助力您快速實現各種場景的開發。

二、EasyES的理念是什麼?

把簡單,易用,方便留給用户,把複雜留給框架。

三、EasyES的願景是什麼?

讓天下沒有難用的ES, 致力於成為全球最受歡迎的ElasticSearch搜索引擎開發框架。

四、EasyES的優勢有哪些?

  • 1.全自動索引託管: 全球開源首創的索引託管模式,開發者無需關心索引的創建更新及數據遷移等繁瑣步驟,索引全生命週期皆可託管給框架,由框架自動完成,過程零停機,用户無感知,徹底解放開發者。##
  • 2.屏蔽語言差異: 開發者只需要會MySQL語法即可使用Es,真正做到一通百通,無需學習枯燥易忘的Es語法,Es使用相對MySQL較低頻,學了長期不用也會忘,沒必要浪費這時間.開發就應該專注於業務,省下的時間去擼鐵,去陪女朋友陪家人,不做資本家的韭菜。
  • 3.代碼量極少: 與直接使用RestHighLevelClient相比,相同的查詢平均可以節省3-5倍左右的代碼量。
  • 4.零魔法值: 字段名稱直接從實體中獲取,無需輸入字段名稱字符串這種魔法值,提高代碼可讀性,杜絕因字段名稱修改而代碼漏改帶來的Bug。
  • 5.零額外學習成本: 開發者只要會國內最受歡迎的Mybatis-Plus語法,即可無縫遷移至EE,EE採用和前者相同的語法,消除使用者額外學習成本,直接上手,爽。
  • 6.降低開發者門檻: Es通常需要中高級開發者才能駕馭,但通過接入EE,即便是隻瞭解ES基礎的初學者也可以輕鬆駕馭ES完成絕大多數需求的開發,可以提高人員利用率,降低企業成本。

五、EasyES的特性有哪些?

  • 1. 無侵入: 只做增強不做改變,引入它不會對現有工程產生影響,如絲般順滑。
  • 2. 損耗小: 啟動即會自動注入基本 CURD,性能基本無損耗,直接面向對象操作。
  • 3. 強大的 CRUD 操作: 內置通用 Mapper,僅僅通過少量配置即可實現大部分 CRUD 操作,更有強大的條件構造器,滿足各類使用需求。
  • 4. 支持 Lambda 形式調用: 通過 Lambda 表達式,方便的編寫各類查詢條件,無需再擔心字段寫錯段。
  • 5. 支持主鍵自動生成: 支持2 種主鍵策略,可自由配置,完美解決主鍵問題。
  • 6. 支持 ActiveRecord 模式: 支持 ActiveRecord 形式調用,實體類只需繼承 Model 類即可進行強大的 CRUD 操作。
  • 7. 支持自定義全局通用操作: 支持全局通用方法注入( Write once, use anywhere )。
  • 8. 內置分頁插件: 基於RestHighLevelClient 物理分頁,開發者無需關心具體操作,且無需額外配置插件,寫分頁等同於普通 List 查詢,且保持和PageHelper插件同樣的分頁返回字段,無需擔心命名影響。
  • 9. MySQL功能全覆蓋: MySQL中支持的功能通過EE都可以輕鬆實現。
  • 10. 支持ES高階語法: 支持高亮搜索,分詞查詢,權重查詢,Geo地理位置查詢,IP查詢,聚合查詢等高階語法。
  • 11. 良好的拓展性: 底層仍使用RestHighLevelClient,可保持其拓展性,開發者在使用EE的同時,仍可使用RestHighLevelClient的功能。

六、EasyES的框架結構是怎樣的?

七、EasyES有哪些應用場景?

ES適用的地方,EasyES同樣適用(基本上可滿足大多數的場景要求):

  • 1.搜索文庫。
  • 2.電商商品檢索。
  • 3.海量系統日誌檢索。
  • 4.在線智能客服。
  • 5.機器人。
  • 6.打車app。
  • 7.外賣app。
  • 8.社區團購配送。
  • 9.陌生人社交。

八、關於EasyES的資料有哪些?

EasyES官方網站:

https://www.easy-es.cn/

Easy-Es的Gitee倉庫:

https://gitee.com/dromara/easy-es

Easy-Es的Github倉庫:

https://github.com/dromara/easy-es

開源不易,如果EasyES對你實際中應用ES有所幫助,不妨給個star鼓勵一下開源作者。

九、在YC-Framework中如何使用EasyES?

1.引入依賴

<dependency>
    <groupId>com.yc.framework</groupId>
    <artifactId>yc-common-easyes</artifactId>
</dependency>

2.編寫數據實體

@Data
public class DocumentEntity {
    /**
     * es中的唯一id
     */
    private String id;
    /**
     * 文檔標題
     */
    private String title;
    /**
     * 文檔內容
     */
    private String content;
}

3.編寫數據實體訪問Mapper

@Repository
public interface DocumentMapper extends BaseEsMapper<DocumentEntity> {
}

4.編寫Controller

@RestController
public class DocumentController {

    @Autowired
    private DocumentMapper documentMapper;

    @GetMapping("/add")
    public void test() {
        // 測試插入數據
        DocumentEntity document = new DocumentEntity();
        document.setTitle("Hello");
        document.setContent("Hello Easy ES");
        int successCount = documentMapper.insert(document);
        System.out.println(successCount);
    }

    @GetMapping("/query")
    public DocumentEntity query() {
        // 測試查詢
        String title = "Hello";
        LambdaEsQueryWrapper<DocumentEntity> wrapper = new LambdaEsQueryWrapper<>();
        wrapper.eq(DocumentEntity::getTitle, title);
        DocumentEntity document = documentMapper.selectOne(wrapper);
        System.out.println(document);
        return document;
    }
}

YC-Framework官網:

https://framework.youcongtech.com/

YC-Framework Github源代碼:

https://github.com/developers-youcong/yc-framework

YC-Framework Gitee源代碼:

https://gitee.com/developers-youcong/yc-framework

以上源代碼均已開源,開源不易,如果對你有幫助,不妨給個star!!!