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

SpringBoot中整合ElasticSearch實現(xiàn)增刪改查等操作

這篇具有很好參考價值的文章主要介紹了SpringBoot中整合ElasticSearch實現(xiàn)增刪改查等操作。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

場景

SpringBoot中整合ElasticSearch快速入門以及踩坑記錄:

https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/135599698

在上面進行集成的基礎(chǔ)上,實現(xiàn)對ES數(shù)據(jù)的增刪改查等操作。

注:

博客:
霸道流氓氣質(zhì)-CSDN博客

實現(xiàn)

1、ElastciSearch的對象映射

Spring Data Elasticsearch - Reference Documentation

Spring Data Elasticsearch 對象映射是將 Java 對象(域?qū)嶓w)映射到存儲在 Elasticsearch 中的 JSON 表示并返回的過程。

可用注解參考官網(wǎng)明細(xì):

@Document:在類級別應(yīng)用,以指示此類是映射到數(shù)據(jù)庫的候選項。 最重要的屬性是:

indexName:要存儲此實體的索引的名稱。 這可以包含一個 SpEL 模板表達式,例如"log-#{T(java.time.LocalDate).now().toString()}"

type:映射類型。 如果未設(shè)置,則使用類的小寫簡單名稱。(自 4.0 版起已棄用)

shards:索引的分片數(shù)。

replicas:索引的副本數(shù)。

refreshIntervall:索引的刷新間隔。 用于創(chuàng)建索引。 默認(rèn)值為“1s”。

indexStoreType:索引的索引存儲類型。 用于創(chuàng)建索引。 默認(rèn)值為“fs”。

createIndex:標(biāo)記是否在存儲庫引導(dǎo)時創(chuàng)建索引。 默認(rèn)值為 true。 請參閱使用相應(yīng)映射自動創(chuàng)建索引

versionType:版本管理的配置。 默認(rèn)值為 EXTERNAL。

@Id:在字段級別應(yīng)用以標(biāo)記用于標(biāo)識目的的字段。

@Transient:默認(rèn)情況下,所有字段在存儲或檢索文檔時都映射到文檔,此注釋不包括該字段。

@PersistenceConstructor:標(biāo)記給定的構(gòu)造函數(shù)(甚至是受包保護的構(gòu)造函數(shù))以在從數(shù)據(jù)庫實例化對象時使用。 構(gòu)造函數(shù)參數(shù)按名稱映射到檢索到的 Document 中的鍵值。

@Field:應(yīng)用于字段級別并定義字段的屬性,大部分屬性映射到相應(yīng)的 Elasticsearch Mapping 定義(以下列表不完整,請查看注解 Javadoc 以獲取完整參考):

name:將在 Elasticsearch 文檔中表示的字段名稱,如果未設(shè)置,則使用 Java 字段名稱。

type:字段類型,可以是 Text、Keyword、Long、Integer、Short、Byte、Double、Float、Half_Float、Scaled_Float、Date、Date_Nanos、Boolean、Binary、Integer_Range、Float_Range、Long_Range、Double_Range、Date_Range、Ip_Range、Object、Nested、Ip、TokenCount、Percolator、Flattened、Search_As_You_Type之一。 請參閱 Elasticsearch 映射類型

format以及 Date 類型的定義。pattern

store:標(biāo)記是否應(yīng)將原始字段值存儲在 Elasticsearch 中,默認(rèn)值為 false。

analyzer、 ,用于指定自定義分析器和規(guī)范化程序。searchAnalyzernormalizer

@GeoPoint:將字段標(biāo)記為geo_point數(shù)據(jù)類型。 如果字段是類的實例,則可以省略。GeoPoint

當(dāng)然也可以自定義轉(zhuǎn)換規(guī)則:

SpringBoot中整合ElasticSearch實現(xiàn)增刪改查等操作,SpringBoot,spring boot,elasticsearch,jenkins

按照以上注解說明,新建實體類

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.data.annotation.Id;
import org.springframework.data.elasticsearch.annotations.Document;
import org.springframework.data.elasticsearch.annotations.Field;
import org.springframework.data.elasticsearch.annotations.FieldType;

@Document(indexName="books",createIndex = true)
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class ElasticBook {
??? @Id
??? private Integer id;

??? @Field(type = FieldType.Text)
??? private String name;

??? @Field(type = FieldType.Text)
??? private String summary;

??? @Field(type = FieldType.Integer)
??? private Integer price;
}

這里createIndex 默認(rèn)就是true,可以不寫,代表如果索引不存在則創(chuàng)建。

2、增刪改查實現(xiàn)

新建接口Repository,使其繼承ElasticsearchRepository

import com.ruoyi.system.domain.study.ElasticBook;
import org.springframework.data.elasticsearch.repository.ElasticsearchRepository;
import org.springframework.stereotype.Repository;
import java.util.List;

@Repository
public interface ElasticSearchRepository extends ElasticsearchRepository<ElasticBook,Integer> {
??? List<ElasticBook> findByName(String name);
}

則可以直接使用其自帶的各種方法

SpringBoot中整合ElasticSearch實現(xiàn)增刪改查等操作,SpringBoot,spring boot,elasticsearch,jenkins

也可以自定義方法,比如findByName就是根據(jù)書名模糊搜索

自定義派生的方法不用實現(xiàn),只要符合其關(guān)鍵字和規(guī)則可自動實現(xiàn)。

這塊可參考官網(wǎng)從方法名稱創(chuàng)建查詢說明:

Spring Data Elasticsearch - Reference Documentation

SpringBoot中整合ElasticSearch實現(xiàn)增刪改查等操作,SpringBoot,spring boot,elasticsearch,jenkins

3、新建Service接口

import java.util.List;

public interface IElasticSearchService {

??? void save(ElasticBook book);

??? ElasticBook findById(Integer id);

??? void update(ElasticBook book);

??? void deleteById(Integer id);

??? List<ElasticBook> findByName(String name);
}

4、新建service實現(xiàn)

import com.ruoyi.system.repository.ElasticSearchRepository;
import com.ruoyi.system.service.IElasticSearchService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;

@Service
public class ElasticSearchServiceImpl implements IElasticSearchService {

??? @Autowired
??? private ElasticSearchRepository repository;

??? @Override
??? public void save(ElasticBook book) {
??????? repository.save(book);
??? }

??? @Override
??? public ElasticBook findById(Integer id) {
??????? return repository.findById(id).get();
??? }

??? @Override
??? public void update(ElasticBook book) {
??????? repository.save(book);
??? }

??? @Override
??? public void deleteById(Integer id) {
??????? repository.deleteById(id);
??? }

??? @Override
??? public List<ElasticBook> findByName(String name) {
??????? return repository.findByName(name);
??? }
}

5、編寫單元測試

@RunWith(SpringRunner.class)
@SpringBootTest(classes = RuoYiApplication.class,webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
public class ElasticSearchTest {

??? @Autowired
??? @Qualifier("elasticsearchClient")
??? public RestHighLevelClient highLevelClient;

??? @Autowired
??? private IElasticSearchService iElasticSearchService;

??? @Test
??? public void connecTest() throws IOException {
??????? CreateIndexRequest request = new CreateIndexRequest("test");
??????? CreateIndexResponse response = highLevelClient.indices().create(request, RequestOptions.DEFAULT);
??????? // 查看是否創(chuàng)建成功
??????? System.out.println(response.isAcknowledged());
??????? highLevelClient.close();
??? }

??? //保存
??? @Test
??? public void saveTest() throws IOException {
??????? ElasticBook book = ElasticBook.builder().id(1).name("書名1").summary("霸道的程序猿").price(100).build();
??????? iElasticSearchService.save(book);
??????? highLevelClient.close();
??????? System.out.println("保存成功");
??? }

??? //根據(jù)主鍵查詢
??? @Test
??? public void findTest() throws IOException {
??????? ElasticBook book = ElasticBook.builder().id(2).name("書名2").summary("霸道的程序猿").price(80).build();
??????? iElasticSearchService.save(book);
??????? ElasticBook book1 = iElasticSearchService.findById(2);
??????? highLevelClient.close();
??????? System.out.println("查詢成功");
??????? System.out.println(book1);
??? }

??? //根據(jù)主鍵更新
??? @Test
??? public void updateTest() throws IOException {
??????? ElasticBook book = ElasticBook.builder().id(2).name("書名2更新").summary("霸道的程序猿").price(80).build();
??????? iElasticSearchService.update(book);
??????? ElasticBook book1 = iElasticSearchService.findById(2);
??????? highLevelClient.close();
??????? System.out.println("更新成功");
??????? System.out.println(book1);
??? }

??? //根據(jù)主鍵刪除
??? @Test
??? public void deleteTest() throws IOException {
??????? iElasticSearchService.deleteById(1);
??????? highLevelClient.close();
??????? System.out.println("刪除成功");
??? }

??? //派生查詢
??? @Test
??? public void findByNameTest() throws IOException {
??????? List<ElasticBook> bookList = iElasticSearchService.findByName("書名");
??????? highLevelClient.close();
??????? System.out.println("查詢成功");
??????? System.out.println(bookList);
??? }
}

6、單元測試運行結(jié)果

保存結(jié)果

SpringBoot中整合ElasticSearch實現(xiàn)增刪改查等操作,SpringBoot,spring boot,elasticsearch,jenkins

根據(jù)主鍵查詢結(jié)果

SpringBoot中整合ElasticSearch實現(xiàn)增刪改查等操作,SpringBoot,spring boot,elasticsearch,jenkins

更新結(jié)果

SpringBoot中整合ElasticSearch實現(xiàn)增刪改查等操作,SpringBoot,spring boot,elasticsearch,jenkins

模糊搜索

SpringBoot中整合ElasticSearch實現(xiàn)增刪改查等操作,SpringBoot,spring boot,elasticsearch,jenkins

7、關(guān)于查詢與擴展

通過上面簡單入門后,關(guān)于查詢還有計數(shù)、排序、分頁、條件等高級用法,這里可以在需要用到時再查詢官方文檔查看

SpringBoot中整合ElasticSearch實現(xiàn)增刪改查等操作,SpringBoot,spring boot,elasticsearch,jenkins文章來源地址http://www.zghlxwxcb.cn/news/detail-802807.html

到了這里,關(guān)于SpringBoot中整合ElasticSearch實現(xiàn)增刪改查等操作的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • Spring整合Elasticsearch----其他Elasticsearch操作支持

    本文介紹了對Elasticsearch操作的額外支持,這些操作無法通過存儲庫接口直接訪問。建議將這些操作添加為自定義實現(xiàn),如“ 自定義存儲庫實現(xiàn)”中所述。 當(dāng)使用Spring Data創(chuàng)建Elasticsearch索引時,可以使用@Setting注解定義不同的索引設(shè)置。以下參數(shù)可用: useServerConfiguration 不發(fā)

    2024年04月13日
    瀏覽(16)
  • Hbase-技術(shù)文檔-spring-boot整合使用hbase--簡單操作增刪改查--提供封裝高可用的模版類

    使用spring-boot項目來整合使用hbase。 依賴聲明表示將把Apache HBase客戶端庫的2.4.3版本添加到項目中。HBase是一個分布式、可擴展的大數(shù)據(jù)存儲系統(tǒng),它基于Google的Bigtable模型,并使用了Hadoop分布式文件系統(tǒng)作為底層存儲。HBase客戶端庫是用于與HBase數(shù)據(jù)庫進行交互的工具庫,提供

    2024年02月07日
    瀏覽(25)
  • springboot整合easy-es實現(xiàn)數(shù)據(jù)的增刪改查

    springboot整合easy-es實現(xiàn)數(shù)據(jù)的增刪改查

    背景 目前公司的一個老項目,查詢賊慢,需要想辦法提升一下速度,于是就想到了ES,現(xiàn)在嘗試一下將ES整合到項目中來提升檢索效率。 ES是基于倒排索引實現(xiàn)的,倒排索引中一個表相當(dāng)于一個索引,表中的每條記錄都是一個文檔(JSON數(shù)據(jù)),系統(tǒng)會先對字段數(shù)據(jù)進行分詞,

    2024年01月20日
    瀏覽(19)
  • 【SpringBoot】整合Elasticsearch 操作索引及文檔

    【SpringBoot】整合Elasticsearch 操作索引及文檔

    官網(wǎng)操作文檔:Elasticsearch Clients | Elastic ????? ???????? 踩坑太多了。。。這里表明一下Spring Boot2.4以上版本可能會出現(xiàn)問題,所以我降到了2.2.1.RELEASE。對于現(xiàn)在2023年6月而言,Es版本已經(jīng)到了8.8,而SpringBoot版本已經(jīng)到了3.x版本。如果是高版本的Boot在配置類的時候會發(fā)現(xiàn)

    2024年02月09日
    瀏覽(57)
  • 使用ElasticsearchRepository和ElasticsearchRestTemplate操作Elasticsearch,Spring Boot整合Elasticsearch

    使用ElasticsearchRepository和ElasticsearchRestTemplate操作Elasticsearch,Spring Boot整合Elasticsearch

    提示:文章寫完后,目錄可以自動生成,如何生成可參考右邊的幫助文檔 Elasticsearch官網(wǎng)參考文檔:https://www.elastic.co/guide/index.html Elasticsearch官方下載地址:https://www.elastic.co/cn/downloads/elasticsearch https://docs.spring.io/spring-data/elasticsearch/reference/ 添加依賴 修改yml配置文件 【自定義

    2024年04月22日
    瀏覽(25)
  • Spring Boot入門(08):整合Mybatis訪問MySQL實現(xiàn)增刪改查 | 超級詳細(xì),建議收藏

    Spring Boot入門(08):整合Mybatis訪問MySQL實現(xiàn)增刪改查 | 超級詳細(xì),建議收藏

    ????????在現(xiàn)代的Web應(yīng)用程序中,數(shù)據(jù)庫操作是不可避免的。而Spring Boot作為一款快速開發(fā)框架,其優(yōu)秀的集成能力非常適合與數(shù)據(jù)庫交互,而MyBatis則是一個優(yōu)秀的ORM框架,可以大大簡化我們的數(shù)據(jù)庫操作。本文將結(jié)合Spring Boot和MyBatis,帶您實現(xiàn)高效的MySQL增刪改查操作,

    2024年02月12日
    瀏覽(28)
  • Springboot 整合 Elasticsearch(五):使用RestHighLevelClient操作ES ②

    Springboot 整合 Elasticsearch(五):使用RestHighLevelClient操作ES ②

    ?? 前情提要: Springboot 整合 Elasticsearch(三):使用RestHighLevelClient操作ES ① 目錄 ?一、Springboot 整合 Elasticsearch 1、RestHighLevelClient API介紹 1.1、全查詢 分頁 排序 1.2、單條件查詢 1.2.1、termQuery 1.2.2、matchQuery 1.2.3、短語檢索 1.3、組合查詢 1.4、范圍查詢 1.5、模糊查詢 1.6、分組

    2024年04月11日
    瀏覽(28)
  • Springboot --- 整合spring-data-jpa和spring-data-elasticsearch

    Springboot --- 整合spring-data-jpa和spring-data-elasticsearch

    SpringBoot: 整合Ldap. SpringBoot: 整合Spring Data JPA. SpringBoot: 整合Elasticsearch. SpringBoot: 整合spring-data-jpa和spring-data-elasticsearch. SpringBoot: 整合thymeleaf. SpringBoot: 注入第三方j(luò)ar包. SpringBoot: 整合Redis. SpringBoot: 整合slf4j打印日志. SpringBoot: 整合定時任務(wù),自動執(zhí)行方法. SpringBoot: 配置多數(shù)據(jù)源

    2023年04月25日
    瀏覽(30)
  • SpringBoot———實現(xiàn)增刪改查操作

    SpringBoot———實現(xiàn)增刪改查操作

    提示:以下是本篇文章正文內(nèi)容,下面案例可供參考 代碼如下(示例): 最后在運行項目在postman測試

    2024年02月02日
    瀏覽(40)
  • 整合vue elementui springboot mybatisplus前后端分離的 簡單增加功能 刪改查未實現(xiàn)

    涉及知識點 1.springboot項目啟動創(chuàng)建? 配置yml文件 2.mybatisplus的使用 3.vue的vite文件配置 4.vue springboot 前后端數(shù)據(jù)交互 1.建立項目的配置文件 src/main/resources/application.yml 2.建立項目 pom.xml 3.建立數(shù)據(jù)庫表 4.建立實體類 cn.webrx.pojo.User 5.建立項目入口程序App cn.webrx.App 6.建立sevices axi

    2024年02月07日
    瀏覽(16)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包