国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

SpringBoot整合Easy-ES操作演示文檔

這篇具有很好參考價(jià)值的文章主要介紹了SpringBoot整合Easy-ES操作演示文檔。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

SpringBoot整合Easy-ES操作演示文檔

1 概述及特性

1.1 官網(wǎng)

  • Easy-ES官網(wǎng): https://www.easy-es.cn/
  • 官方示例: https://gitee.com/dromara/easy-es/tree/master/easy-es-sample
  • 參考鏈接: https://blog.51cto.com/yueshushu/6193710

1.2 主要特性

  • **零侵入:**針對ES官方提供的RestHighLevelClient只做增強(qiáng)不做改變,引入EE不會對現(xiàn)有工程產(chǎn)生影響,使用體驗(yàn)如絲般順滑。
  • **損耗?。?*啟動(dòng)即會自動(dòng)注入基本 CURD,性能基本無損耗,直接面向?qū)ο蟛僮鳌?/li>
  • 自動(dòng)化: 全球領(lǐng)先的哥哥你不用動(dòng),索引我全自動(dòng)模式,幫助開發(fā)者和運(yùn)維杜絕索引困擾。
  • 智能化: 根據(jù)索引類型和當(dāng)前查詢類型上下文綜合智能判斷當(dāng)前查詢是否需要拼接.keyword后綴,減少小白誤用的可能。
  • **強(qiáng)大的 CRUD 操作:*內(nèi)置通用 Mapper,僅僅通過少量配置即可實(shí)現(xiàn)大部分 CRUD 操作,更 有強(qiáng)大的條件構(gòu)造器,滿足各類使用需求。
  • **支持 Lambda 形式調(diào)用:**通過 Lambda 表達(dá)式,方便的編寫各類查詢條件,無需再擔(dān)心字段寫錯(cuò)段。
  • **支持主鍵自動(dòng)生成:**支持多種主鍵策略,可自由配置,完美解決主鍵問題。
  • **支持 ActiveRecord 模式:**支持 ActiveRecord 形式調(diào)用,實(shí)體類只需繼承 Model 類即可進(jìn)行強(qiáng)大的 CRUD 操作。
  • **支持自定義全局通用操作:**支持全局通用方法注入( Write once, use anywhere )。
  • **內(nèi)置分頁插件:**基于RestHighLevelClient 物理分頁,開發(fā)者無需關(guān)心具體操作,且無需額外配置插件,寫分頁等同于普通 List 查詢,比MP的PageHelper插件用起來更簡單,且保持與其同樣的分頁返回字段,無需擔(dān)心命名影響。
  • **MySQL功能全覆蓋:**MySQL中支持的功能通過EE都可以輕松實(shí)現(xiàn)。
  • **支持ES高階語法:**支持聚合,嵌套,父子類型,高亮搜索,分詞查詢,權(quán)重查詢,Geo地理位置查詢,IP查詢等高階語法,應(yīng)有盡有。
  • **良好的拓展性:*底層仍使用RestHighLevelClient,可保持其拓展性,開發(fā)者在使用EE的同時(shí), * 仍可使用RestHighLevelClient的所有功能。

2 整合配置

2.1 導(dǎo)入POM

  • Latest Version: 2.0.0-beta4
<dependency>
    <groupId>org.dromara.easy-es</groupId>
    <artifactId>easy-es-boot-starter</artifactId>
    <version>${Latest Version}</version>
</dependency>

2.2 Yaml配置

easy-es:
  # 基礎(chǔ)配置項(xiàng)
  enable: true
  address: 10.15.20.11:9200
  schema: http
  username:
  password:
  keep-alive-millis: 18000
  # 擴(kuò)展的連接池配置項(xiàng)
  global-config:
    process-index-mode: smoothly
    async-process-index-blocking: true
    print-dsl: true
    db-config:
      map-underscore-to-camel-case: true
      id-type: customize
      field-strategy: not_empty
      refresh-policy: immediate
      enable-track-total-hits: true

2.3 @EsMapperScan 注解掃描

  • 標(biāo)注與主啟動(dòng)類上,功能與MP的@MapperScan一致。
package com.xs.easy;

import org.dromara.easyes.starter.register.EsMapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.context.properties.EnableConfigurationProperties;

@EsMapperScan("com.xs.easy.mapper")
@EnableConfigurationProperties
@SpringBootApplication
public class XsEasyApplication {

    public static void main(String[] args) {
        SpringApplication.run(XsEasyApplication.class, args);
    }

}

2.4 配置Entity

package com.xs.easy.entity;

import lombok.Data;
import lombok.experimental.Accessors;
import org.dromara.easyes.annotation.HighLight;
import org.dromara.easyes.annotation.IndexField;
import org.dromara.easyes.annotation.IndexId;
import org.dromara.easyes.annotation.IndexName;
import org.dromara.easyes.annotation.rely.Analyzer;
import org.dromara.easyes.annotation.rely.FieldStrategy;
import org.dromara.easyes.annotation.rely.FieldType;
import org.dromara.easyes.annotation.rely.IdType;

/**
 * es 數(shù)據(jù)模型
 **/
@Data
@Accessors(chain = true)
@IndexName(value = "easy-es-document", shardsNum = 3, replicasNum = 2, keepGlobalPrefix = true, maxResultWindow = 100)
public class Document {
    /**
     * es中的唯一id,如果你想自定義es中的id為你提供的id,比如MySQL中的id,請將注解中的type指定為customize或直接在全局配置文件中指定,如此id便支持任意數(shù)據(jù)類型)
     */
    @IndexId(type = IdType.CUSTOMIZE)
    private String id;
    /**
     * 文檔標(biāo)題,不指定類型默認(rèn)被創(chuàng)建為keyword類型,可進(jìn)行精確查詢
     */
    private String title;
    /**
     * 文檔內(nèi)容,指定了類型及存儲/查詢分詞器
     */
    @HighLight(mappingField = "highlightContent")
    @IndexField(fieldType = FieldType.TEXT, analyzer = Analyzer.IK_SMART)
    private String content;
    /**
     * 作者 加@TableField注解,并指明strategy = FieldStrategy.NOT_EMPTY 表示更新的時(shí)候的策略為 創(chuàng)建者不為空字符串時(shí)才更新
     */
    @IndexField(strategy = FieldStrategy.NOT_EMPTY)
    private String creator;
    /**
     * 創(chuàng)建時(shí)間
     */

    @IndexField(fieldType = FieldType.DATE, dateFormat = "yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis")
    private String gmtCreate;
    /**
     * es中實(shí)際不存在的字段,但模型中加了,為了不和es映射,可以在此類型字段上加上 注解@TableField,并指明exist=false
     */
    @IndexField(exist = false)
    private String notExistsField;
    /**
     * 地理位置經(jīng)緯度坐標(biāo) 例如: "40.13933715136454,116.63441990026217"
     */
    @IndexField(fieldType = FieldType.GEO_POINT)
    private String location;
    /**
     * 圖形(例如圓心,矩形)
     */
    @IndexField(fieldType = FieldType.GEO_SHAPE)
    private String geoLocation;
    /**
     * 自定義字段名稱
     */
    @IndexField(value = "wu-la", fieldType = FieldType.TEXT, analyzer = Analyzer.IK_SMART, searchAnalyzer = Analyzer.IK_SMART, fieldData = true)
    private String customField;

    /**
     * 高亮返回值被映射的字段
     */
    private String highlightContent;

    /**
     * 文檔點(diǎn)贊數(shù)
     */
    private Integer starNum;
}

2.5 配置Mapper

package com.xs.easy.mapper;

import com.xs.easy.entity.Document;
import org.dromara.easyes.core.core.BaseEsMapper;

/**
 * mapper 相當(dāng)于Mybatis-plus的mapper
 **/
public interface DocumentMapper extends BaseEsMapper<Document> {

}

3 基礎(chǔ)操作

3.1 批量保存

    public Integer insertES(int num) {
        List<Document> lis = new ArrayList<>();
        for (int i = 0; i < num; i++) {
            Document document = new Document();
            document.setId(ChineseUtil.randomNumber(1, 1000000000) + "");
            document.setTitle(ChineseRandomGeneration.GBKMethod(16));
            document.setContent(ChineseRandomGeneration.GBKMethod(160));
            document.setCreator(ChineseUtil.randomChineseName());
            document.setGmtCreate(LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
            document.setStarNum(ChineseUtil.randomNumber(1, 10000));
            lis.add(document);
        }
        return this.documentMapper.insertBatch(lis);

    }

SpringBoot整合Easy-ES操作演示文檔,SpringBoot,spring boot,elasticsearch,后端

3.2 數(shù)據(jù)更新

    public Integer updateES(Document doc) {

        return this.documentMapper.updateById(doc);
    }

3.3 數(shù)據(jù)刪除

    public Integer removeES(String id) {
        // 條件構(gòu)造
        LambdaEsQueryWrapper<Document> wrapper = new LambdaEsQueryWrapper<>();
        wrapper.eq(Document::getId, id);
        return documentMapper.delete(wrapper);
    }

3.4 組合查詢

    public List<Document> listByES(Document doc) {

        // 條件構(gòu)造
        LambdaEsQueryWrapper<Document> wrapper = new LambdaEsQueryWrapper<>();
        wrapper.like(StringUtils.isNotBlank(doc.getTitle()), Document::getTitle, doc.getTitle());
        wrapper.like(StringUtils.isNotBlank(doc.getContent()), Document::getTitle, doc.getContent());
        return documentMapper.selectList(wrapper);
    }

SpringBoot整合Easy-ES操作演示文檔,SpringBoot,spring boot,elasticsearch,后端

3.5 高亮查詢

    public List<Document> highSearchES(Document doc) {
        // 條件構(gòu)造
        LambdaEsQueryWrapper<Document> wrapper = new LambdaEsQueryWrapper<>();
        wrapper.match(StringUtils.isNotBlank(doc.getContent()), Document::getContent, doc.getContent());
        return documentMapper.selectList(wrapper);
    }

SpringBoot整合Easy-ES操作演示文檔,SpringBoot,spring boot,elasticsearch,后端

3.6 統(tǒng)計(jì)查詢

    public Long countTotal() {
        LambdaEsQueryWrapper<Document> wrapper = new LambdaEsQueryWrapper<>();
        return documentMapper.selectCount(wrapper);
    }

4 整合異常

4.1 XContentType找不到問題

  • java.lang.NoClassDefFoundError: org/elasticsearch/common/xcontent/XContentType

SpringBoot整合Easy-ES操作演示文檔,SpringBoot,spring boot,elasticsearch,后端

  • 排除Easy-Es中的依賴
        <!-- Easy-ES -->
        <dependency>
            <groupId>org.dromara.easy-es</groupId>
            <artifactId>easy-es-boot-starter</artifactId>
            <!--排除依賴-->
            <exclusions>
                <exclusion>
                    <groupId>org.elasticsearch.client</groupId>
                    <artifactId>elasticsearch-rest-high-level-client</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>org.elasticsearch</groupId>
                    <artifactId>elasticsearch</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
  • 重新引入指定版本的組件
<properties>
    <es.version>7.10.1</es.version>
    <es-rest-high-level-client.version>7.10.1</es-rest-high-level-client.version>
</properties>

<!--新增依賴-->
<dependency>
    <groupId>org.elasticsearch.client</groupId>
    <artifactId>elasticsearch-rest-high-level-client</artifactId>
    <version>${es-rest-high-level-client.version}</version>
</dependency>
<dependency>
    <groupId>org.elasticsearch</groupId>
    <artifactId>elasticsearch</artifactId>
    <version>${es.version}</version>
</dependency>

SpringBoot整合Easy-ES操作演示文檔,SpringBoot,spring boot,elasticsearch,后端文章來源地址http://www.zghlxwxcb.cn/news/detail-722897.html

到了這里,關(guān)于SpringBoot整合Easy-ES操作演示文檔的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 18、全文檢索--Elasticsearch-- SpringBoot 整合 Spring Data Elasticsearch(異步方式(Reactive)和 傳統(tǒng)同步方式 分別操作ES的代碼演示)

    18、全文檢索--Elasticsearch-- SpringBoot 整合 Spring Data Elasticsearch(異步方式(Reactive)和 傳統(tǒng)同步方式 分別操作ES的代碼演示)

    啟動(dòng)命令行窗口,執(zhí)行:elasticsearch 命令即可啟動(dòng) Elasticsearch 服務(wù)器 三種查詢方式解釋: 方法名查詢: 就是全自動(dòng)查詢,只要按照規(guī)則來定義查詢方法 ,Spring Data Elasticsearch 就會幫我們生成對應(yīng)的查詢語句,并且生成方法體。 @Query 查詢 : 就是半自動(dòng)查詢, 按照 S

    2024年03月12日
    瀏覽(22)
  • Easy-Es筆記

    Easy-Es筆記

    Easy-Es(簡稱EE)是一款由國內(nèi)開發(fā)者打造并完全開源的ElasticSearch-ORM框架。在原生 RestHighLevelClient 的基礎(chǔ)上,只做增強(qiáng)不做改變,為簡化開發(fā)、提高效率而生。Easy-Es采用和MP一致的語法設(shè)計(jì),降低ElasticSearch搜索引擎使用門檻,和額外學(xué)習(xí)成本,并大幅減少開發(fā)者工作量,幫助

    2024年02月15日
    瀏覽(20)
  • easy-es 使用

    easy-es 使用

    1、pom中引入依賴 2、yml文件增加配置 3、實(shí)體索引 4、mapper 5、service 6、controller 7、新增或修改數(shù)據(jù) 8、淺分頁 ?9、searchAfter 分頁,必須有一個(gè)唯一的排序?qū)傩?,例如:id 下一頁: 當(dāng)使用??searchAfter分頁時(shí),想使用銷量、價(jià)格 等排序來展示數(shù)據(jù),需要結(jié)合一個(gè)唯一且連續(xù)的屬

    2024年02月11日
    瀏覽(18)
  • ES增強(qiáng)框架easy-es

    ES增強(qiáng)框架easy-es

    因?yàn)樽罱龅墓δ苁顷P(guān)于輿情的,所以數(shù)據(jù)量比較大的,本來打算用MySQL做時(shí)間分表來做,但是經(jīng)過一段時(shí)間的測試,發(fā)現(xiàn)數(shù)據(jù)量太大,用時(shí)間分表不能滿足性能的要求,所以決定將數(shù)據(jù)存儲改為ES,但是短時(shí)間內(nèi)改底層框架又不是一個(gè)小工程,時(shí)間上不允許,所以找到了一個(gè)很合適的框架

    2024年04月25日
    瀏覽(25)
  • easy-es使用詳解與源碼解析

    easy-es使用詳解與源碼解析

    1.git clone后,easy-es-core中的pom中需要引入: 2.easy-es-sample 中提供了基本案例,可以用來解析源碼。 3.easy-es-common中的pom里可以看到,它是基于elasticsearch-rest-high-level-client的。 如果不熟悉elasticsearch-rest-high-level-client,建議先熟悉一下。 查詢所有:match_all (一般也就是測試用用)

    2024年02月09日
    瀏覽(21)
  • ES商品搜索實(shí)戰(zhàn) Easy-Es搭配原生SearchSourceBuilder

    組裝查詢條件LambdaEsQueryWrapper,包含查詢條件,排序,分頁,高亮,去重 這里是搜索的條件組裝,封裝BoolQueryBuilder 這里就是方法的入口,productMapper.selectList(wrapper)和Mybatis-Plus的寫法基本上一摸一樣,如果不懂可以去看一下EE官方使用方法 Easy-Es

    2024年02月17日
    瀏覽(16)
  • Easy-Es框架實(shí)踐測試整理 基于ElasticSearch的ORM框架

    Easy-Es框架實(shí)踐測試整理 基于ElasticSearch的ORM框架

    Easy-Es(簡稱EE)是一款基于ElasticSearch(簡稱Es)官方提供的RestHighLevelClient打造的ORM開發(fā)框架,在 RestHighLevelClient 的基礎(chǔ)上,只做增強(qiáng)不做改變,為簡化開發(fā)、提高效率而生。EE是Mybatis-Plus的Es平替版,在有些方面甚至比MP更簡單,同時(shí)也融入了更多Es獨(dú)有的功能,助力您快速實(shí)現(xiàn)各種場

    2024年01月16日
    瀏覽(18)
  • 關(guān)于這款開源的ES的ORM框架-Easy-Es適合初學(xué)者入手不?

    關(guān)于這款開源的ES的ORM框架-Easy-Es適合初學(xué)者入手不?

    最近筆者為了撿回以前自學(xué)的ES知識,準(zhǔn)備重新對ES的一些基礎(chǔ)使用做個(gè)大致學(xué)習(xí)總結(jié)。然后在摸魚逛開源社區(qū)時(shí)無意中發(fā)現(xiàn)了一款不錯(cuò)的ElasticSearch插件-Easy-ES,可稱之為“ES界的MyBatis-Plus”。聯(lián)想到之前每次用RestHighLevelClient寫一些DSL操作時(shí)都很麻煩(復(fù)雜點(diǎn)的搜索代碼量確實(shí)

    2024年02月07日
    瀏覽(20)
  • 【別再做XX外賣啦!和我從零到1編寫Mini版Easy-ES】完成一個(gè)Mapper模型

    【別再做XX外賣啦!和我從零到1編寫Mini版Easy-ES】完成一個(gè)Mapper模型

    作者:沈自在 代碼倉庫:https://gitee.com/tian-haoran/mini-easy-es 本節(jié)教程分支:https://gitee.com/tian-haoran/mini-easy-es/tree/course_02_create_mapper/ ??注意:本項(xiàng)目會持續(xù)更新,直到功能完善 1.1.1 什么是 FactoryBean接口? 很多同學(xué)都知道 BeanFactory 接口,這個(gè)是大名鼎鼎的Spring中的核心接口,

    2024年02月04日
    瀏覽(44)
  • 運(yùn)用easy-es保存數(shù)據(jù)時(shí),報(bào)錯(cuò):cn.easyes.common.exception.EasyEsException: no such method:

    運(yùn)用easy-es保存數(shù)據(jù)時(shí),報(bào)錯(cuò):cn.easyes.common.exception.EasyEsException: no such method:

    cn.easyes.common.exception.EasyEsException: no such method: ?? ?at cn.easyes.common.utils.ExceptionUtils.eee(ExceptionUtils.java:39) ?? ?at cn.easyes.core.cache.BaseCache.lambda$setterMethod$6(BaseCache.java:127) ?? ?at cn.easyes.core.cache.BaseCache$$Lambda$2307/809171830.get(Unknown Source) ?? ?at java.util.Optional.orElseThrow(Optional.java:29

    2024年02月03日
    瀏覽(24)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包