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

【Elasticsearch】spring-boot-starter-data-elasticsearch的使用以及Elasticsearch集群的連接

這篇具有很好參考價值的文章主要介紹了【Elasticsearch】spring-boot-starter-data-elasticsearch的使用以及Elasticsearch集群的連接。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

更多有關博主寫的往期Elasticsearch文章

標題 地址
【ElasticSearch 集群】Linux安裝ElasticSearch集群(圖文解說詳細版) https://masiyi.blog.csdn.net/article/details/131109454
基于SpringBoot+ElasticSearch 的Java底層框架的實現(xiàn) https://masiyi.blog.csdn.net/article/details/121534307
ElasticSearch對標Mysql,誰能拔得頭籌? https://masiyi.blog.csdn.net/article/details/122661822
同事說關鍵字查詢用Mysql,我上去就是一個高壓鍋,用ElasticSearch不香嗎? https://masiyi.blog.csdn.net/article/details/122701654
新年第一天,老板讓升級ElasticSearch版本,我說得加錢 https://masiyi.blog.csdn.net/article/details/122819455
使用了ElasticSearch之后,公司系統(tǒng)查詢速度快了50倍,工資直接翻一倍 https://masiyi.blog.csdn.net/article/details/122819455
ElasticSearch實戰(zhàn)教程PostMan版(超級詳細版) https://masiyi.blog.csdn.net/article/details/123048119
Linux安裝ElasticSearch以及Ik分詞器(圖文解說詳細版) https://masiyi.blog.csdn.net/article/details/121509681

導語

發(fā)現(xiàn)很多公司都是自己導入原生的jar包自己去封裝一套Elasticsearch的框架,這樣雖然可以自定義業(yè)務,但是需要花費很多的時間,其實spring官方有一套springboot的starter,幫助大家快速入手官網(wǎng)的starter,這篇博客也會介紹使用該starter連接Elasticsearch的集群。該starter有點像mybatisplus+Jpa,如果熟悉這兩個框架的同學應該很快就會上手。

官網(wǎng)地址:
https://docs.spring.io/spring-data/elasticsearch/docs/4.0.x/reference/html/#preface

本文所有的代碼都已經(jīng)提交到git倉庫中,倉庫地址:
https://gitee.com/WangFuGui-Ma/spring-boot-elasticSearch

【Elasticsearch】spring-boot-starter-data-elasticsearch的使用以及Elasticsearch集群的連接,ElasticSearch,springboot,elasticsearch,java,spring boot,spring

現(xiàn)在我們開始按照步驟進行spring-boot-starter-data-elasticsearch的使用,本文中使用的spring boot版本為2.7.x 對于的elasticsearch客戶端版本為7.17.x

??第一步,創(chuàng)建一個springboot項目

【Elasticsearch】spring-boot-starter-data-elasticsearch的使用以及Elasticsearch集群的連接,ElasticSearch,springboot,elasticsearch,java,spring boot,spring

??第二步,導入spring-boot-starter-data-elasticsearch依賴

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-data-elasticsearch</artifactId>
		</dependency>

其他依賴

<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter</artifactId>
		</dependency>

		<dependency>
			<groupId>org.projectlombok</groupId>
			<artifactId>lombok</artifactId>
			<optional>true</optional>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>
		<!--json-->
		<dependency>
			<groupId>com.alibaba</groupId>
			<artifactId>fastjson</artifactId>
			<version>1.2.76</version>
		</dependency>
		<!--json-->

【Elasticsearch】spring-boot-starter-data-elasticsearch的使用以及Elasticsearch集群的連接,ElasticSearch,springboot,elasticsearch,java,spring boot,spring

??第三步,配置yml文件

spring:
  elasticsearch:
    uris:
      - 192.168.75.128:9200
      - 192.168.75.129:9200
      - 192.168.75.130:9200
server:
  port: 8889

uris這里填的是集群的地址,如果你的es是單機版的,直接填一個就行了

??第四步,編寫es索引對應的實體類

import lombok.Data;
import org.springframework.data.elasticsearch.annotations.Document;
import org.springframework.data.elasticsearch.annotations.WriteTypeHint;

/**
 * @Author masiyi
 * @Date 2023/6/14 13:46
 * @PackageName:com.masiyi.springbootstarterdataelasticsearch.doman
 * @ClassName: ElasticTest
 * @Description: TODO
 * @Version 1.0
 */
@Data
@Document(indexName = "elastic_test",writeTypeHint = WriteTypeHint.FALSE)
public class ElasticTest {

    private Long id;

    private String name;

    private Integer age;

    private Boolean isMan;
}

注:

  • id這個類型一定要寫,否則會報錯
  • indexName對應es中的索引
  • writeTypeHint如果為false則不會自動創(chuàng)建索引

??第五步,編寫實體類對應的mapper

類似mybatis一樣,我們需要創(chuàng)建對應的mapper

public interface ElasticTestMapper extends ElasticsearchRepository<ElasticTest,Long> {

}

繼承ElasticsearchRepository類,第一個泛型添es對應的實體類,第二個泛型添id的類型

??第六步,使用框架自帶的增刪改查

我們這次用單元測試的方法跟大家演示框架的用法

【Elasticsearch】spring-boot-starter-data-elasticsearch的使用以及Elasticsearch集群的連接,ElasticSearch,springboot,elasticsearch,java,spring boot,spring

注入剛剛創(chuàng)建的mapper和框架的ElasticsearchRestTemplate

??增

??使用ElasticsearchRestTemplate
   @Test
    void save() {
        ElasticTest elasticTest = new ElasticTest();
        elasticTest.setName("李四");
        elasticTest.setAge(23);
        elasticTest.setIsMan(true);
        elasticsearchTemplate.save(elasticTest);
    }
??使用mapper
    @Test
    void insert() {
        ElasticTest elasticTest = new ElasticTest();
        elasticTest.setName("李四");
        elasticTest.setAge(23);
        elasticTest.setIsMan(true);
        elasticTestMapper.save(elasticTest);
    }
??設置指定的id
   @Test
    void insertId() {
        ElasticTest elasticTest = new ElasticTest();
        elasticTest.setName("掉頭發(fā)的王富貴");
        elasticTest.setAge(25);
        elasticTest.setIsMan(true);
        elasticTest.setId(2434235L);
        elasticTestMapper.save(elasticTest);
    }
??批量保存
    @Test
    void saveAll() {
        ElasticTest elasticTest = new ElasticTest();
        elasticTest.setName("李四");
        elasticTest.setAge(24);
        elasticTest.setIsMan(true);
        elasticTestMapper.saveAll(Arrays.asList(elasticTest));
    }

??刪

??傳入實體類刪
    @Test
    void delete() {
        ElasticTest elasticTest = new ElasticTest();
        elasticTest.setId(2342342L);
        elasticTestMapper.delete(elasticTest);
    }
??傳入id刪
    @Test
    void deleteById() {
        elasticTestMapper.deleteById(2342342L);
    }
??刪除索引里面所有的數(shù)據(jù)(慎用)
    @Test
    void deleteAll() {
        elasticTestMapper.deleteAll();
    }

??改

??實體改
    @Test
    void update() {
        ElasticTest elasticTest = new ElasticTest();
        elasticTest.setName("掉頭發(fā)的王富貴hh");
        elasticTest.setId(2434235L);
        elasticTestMapper.save(elasticTest);
    }

這里改會把其他的不在實體里面為null的數(shù)據(jù)清空

【Elasticsearch】spring-boot-starter-data-elasticsearch的使用以及Elasticsearch集群的連接,ElasticSearch,springboot,elasticsearch,java,spring boot,spring

??實體改全部
 @Test
    void updateAll() {
        ElasticTest elasticTest = new ElasticTest();
        elasticTest.setName("掉頭發(fā)的王富貴");
        elasticTest.setAge(24);
        elasticTest.setIsMan(true);
        elasticTest.setId(2434234L);
        elasticTestMapper.save(elasticTest);
    }

如果我們只需要局部更新,可以使用下面的兩種方法

??先查再update
    @Test
    void updateNow() {
        ElasticTest elasticTest = elasticTestMapper.findById(2434234L).get();
        elasticTest.setName("不掉頭發(fā)的王富貴");
        elasticTestMapper.save(elasticTest);
    }

但是這個方法會消耗性能,所以推薦用下面的方法

??直接使用局部更新
    @Test
    void updateNow2() {
        ElasticTest elasticTest = new ElasticTest();
        elasticTest.setName("掉頭發(fā)的王富貴h");
        Map map = JSONObject.parseObject(JSONObject.toJSONString(elasticTest), Map.class);
        UpdateQuery updateQuery = UpdateQuery.builder("0ZUv7okBcQy9f7u_tXkH").withDocument(Document.from(map)).build();
        elasticsearchTemplate.update(updateQuery, IndexCoordinates.of("elastic_test"));
    }

【Elasticsearch】spring-boot-starter-data-elasticsearch的使用以及Elasticsearch集群的連接,ElasticSearch,springboot,elasticsearch,java,spring boot,spring

??查

??根據(jù)id查
    @Test
    void select() {
        Optional<ElasticTest> byId = elasticTestMapper.findById(2434234L);
        byId.ifPresent(System.out::println);
    }
??根據(jù)id列表查
  @Test
    void findAllById() {
        Iterable<ElasticTest> allById = elasticTestMapper.findAllById(Arrays.asList(2434234L));
        allById.forEach(System.out::println);
    }
??查詢?nèi)繑?shù)據(jù)
    @Test
    void findAll() {
        Iterable<ElasticTest> allById = elasticTestMapper.findAll();
        allById.forEach(System.out::println);
    }
??排序查-正序
    @Test
    void findAllSort() {
        Sort age = Sort.by("age").ascending();
        Iterable<ElasticTest> all = elasticTestMapper.findAll(age);
        all.forEach(System.out::println);
    }

??排序查-倒序
    @Test
    void findAllSortDE() {
        Sort age = Sort.by("age").descending();
        Iterable<ElasticTest> all = elasticTestMapper.findAll(age);
        all.forEach(System.out::println);
    }
??分頁查
    @Test
    void findAllPage() {
        PageRequest pageRequest = PageRequest.of(0, 10);
        Page<ElasticTest> all = elasticTestMapper.findAll(pageRequest);
        all.forEach(System.out::println);
        System.out.println(JSON.toJSONString(all));
    }

??自定義復雜的查詢
 @Test
    void findMyStyle() {
        TermQueryBuilder termQueryBuilder = new TermQueryBuilder("name.keyword", "掉頭發(fā)的王富貴");
        NativeSearchQuery nativeSearchQuery = new NativeSearchQuery(termQueryBuilder);

        SearchHits<ElasticTest> search = elasticsearchTemplate.search(nativeSearchQuery, ElasticTest.class);
        List<SearchHit<ElasticTest>> hitList = search.getSearchHits();
        for (SearchHit<ElasticTest> hit : hitList) {
            ElasticTest entity = hit.getContent(); // 獲取實體對象
            System.out.println(entity);
            String index = hit.getIndex(); // 獲取索引名
            System.out.println(index);

        }
    }

??第七步,使用JPA風格的查詢方式

如果會用jpa的同學看到這個可能會非常得熟悉

【Elasticsearch】spring-boot-starter-data-elasticsearch的使用以及Elasticsearch集群的連接,ElasticSearch,springboot,elasticsearch,java,spring boot,spring
可以自定義查詢方法find...

??根據(jù)age查詢
    ElasticTest findByAge(Integer age);
??查詢所有符合age的數(shù)據(jù)
    List<ElasticTest> findAllByAge(Integer age);
??查詢最top的數(shù)據(jù)
    ElasticTest findTopByAge(Integer age);

如果你使用的是idea這種高級的編輯器,你在mapper寫方法的時候會自動提示你。

【Elasticsearch】spring-boot-starter-data-elasticsearch的使用以及Elasticsearch集群的連接,ElasticSearch,springboot,elasticsearch,java,spring boot,spring

通過本文的學習,我們探索了在Spring Boot應用中使用Elasticsearch的方法以及如何連接到Elasticsearch集群。Elasticsearch作為一款強大的搜索和分析引擎,在現(xiàn)代應用開發(fā)中扮演著至關重要的角色。借助于Spring Boot和spring-boot-starter-data-elasticsearch,我們能夠以更加便捷的方式將Elasticsearch集成到我們的項目中,實現(xiàn)高效的數(shù)據(jù)搜索與分析。

通過配置簡單明了的屬性,我們能夠快速地將Spring Boot應用連接到Elasticsearch集群,實現(xiàn)數(shù)據(jù)的索引、搜索和分析。借助于Spring Data Elasticsearch提供的強大功能,我們能夠輕松地定義實體類、進行CRUD操作,并且利用Elasticsearch的全文搜索和分詞等特性,讓我們的應用具備更高效的查詢和檢索能力。

【Elasticsearch】spring-boot-starter-data-elasticsearch的使用以及Elasticsearch集群的連接,ElasticSearch,springboot,elasticsearch,java,spring boot,spring文章來源地址http://www.zghlxwxcb.cn/news/detail-665615.html

到了這里,關于【Elasticsearch】spring-boot-starter-data-elasticsearch的使用以及Elasticsearch集群的連接的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

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

領支付寶紅包贊助服務器費用

相關文章

  • Jpa與Druid線程池及Spring Boot整合(二): spring-boot-starter-data-jpa 踏坑異常處理方案

    Jpa與Druid線程池及Spring Boot整合(二): spring-boot-starter-data-jpa 踏坑異常處理方案

    ? ? ? ? ? ? ? ? ? ?? docker實戰(zhàn)(一):centos7 yum安裝docker docker實戰(zhàn)(二):基礎命令篇 docker實戰(zhàn)(三):docker網(wǎng)絡模式(超詳細) docker實戰(zhàn)(四):docker架構原理 docker實戰(zhàn)(五):docker鏡像及倉庫配置 docker實戰(zhàn)(六):docker 網(wǎng)絡及數(shù)據(jù)卷設置 docker實戰(zhàn)(七):docker 性質(zhì)及版本選擇 認知升維: 道、法、

    2024年02月13日
    瀏覽(27)
  • Spring Boot Starter Data Redis使用Lettuce客戶端報錯:NOAUTH Authentication required

    Spring Boot Starter Data Redis使用Lettuce客戶端報錯:NOAUTH Authentication required

    Spring Boot版本升級為:2.6.14 redis依賴: redis配置不變,還是帶password的: 項目啟動后,獲取redis連接時,報錯:NOAUTH Authentication required spring-boot-starer-data-redis支持使用Jedis和Lettuce作為redis客戶端,如果配置不指定則默認使用Lettuce。 不管是Lettuce還是還是Jedis,核心是構建RedisCo

    2024年01月25日
    瀏覽(27)
  • Spring Boot中使用Spring Data Elasticsearch訪問Elasticsearch

    Spring Boot中使用Spring Data Elasticsearch訪問Elasticsearch

    Elasticsearch是一個分布式的全文搜索和分析引擎,它可以將海量數(shù)據(jù)進行快速的查詢和聚合。Spring Data Elasticsearch是Spring Data家族中的一個成員,它提供了與Elasticsearch的集成,可以方便地使用Spring框架來訪問Elasticsearch。 在本文中,我們將會介紹如何在Spring Boot中使用Spring Data

    2024年02月08日
    瀏覽(21)
  • spring boot 項目中搭建 ElasticSearch 中間件 一 spring data 操作 es

    作者: 逍遙Sean 簡介:一個主修Java的Web網(wǎng)站游戲服務器后端開發(fā)者 主頁:https://blog.csdn.net/Ureliable 覺得博主文章不錯的話,可以三連支持一下~ 如有需要我的支持,請私信或評論留言! 本文是進行ElasticSearch 的環(huán)境準備和基礎操作(使用postman),并且已經(jīng)能夠使用java api操作

    2024年02月10日
    瀏覽(23)
  • Spring Boot - spring-boot-starter

    spring-boot-starter 當學習Spring Boot時,可以通過一個完整的案例來理解和實踐其基本概念和功能。以下是一個簡單的Spring Boot Starter完整案例,展示了如何創(chuàng)建一個基本的Web應用程序: 首先,創(chuàng)建一個名為pom.xml的Maven項目文件,添加以下內(nèi)容:idea或其他直接創(chuàng)建直接跳過!

    2024年02月09日
    瀏覽(24)
  • Spring Boot Starters

    Spring Boot Starters 概述 Spring Boot Starters是一系列為特定應用場景預設的依賴管理和自動配置方案。每個Starter都是為了簡化特定類型的項目構建和配置。例如, spring-boot-starter-web 是為創(chuàng)建基于Spring MVC的Web應用程序而設計的。 Starter的結(jié)構 一個典型的Starter包含以下部分: pom.xml

    2024年01月25日
    瀏覽(82)
  • Spring Boot Starter設計實現(xiàn)

    Starter 是 Spring Boot 非常重要的一個硬核功能。 通過 Starter 我們可以快速的引入一個功能或模塊,而無須關心模塊依賴的其它組件。關于配置,Spring Boot 采用“約定大于配置”的設計理念,Starter 一般都會提供默認配置,只有當我們有特殊需求的時候,才需要在 application.yaml 里

    2024年01月18日
    瀏覽(19)
  • 自定義Spring Boot Starter

    自定義Spring Boot Starter

    Spring Boot starter 我們知道Spring Boot大大簡化了項目初始搭建以及開發(fā)過程,而這些都是通過Spring Boot提供的starter來完成的。在實際項目中一些基礎模塊其本質(zhì)就是starter,所以我們需要對Spring Boot的starter有一個全面深入的了解,這是我們的必備知識。 starter介紹 spring boot 在配置

    2024年02月10日
    瀏覽(29)
  • 6. Spring Boot的starters

    6. Spring Boot的starters

    6. Spring Boot的starters(重要) 一般認為,SpringBoot 微框架從兩個主要層面影響 Spring 社區(qū)的開發(fā)者們: 基于 Spring 框架的“約定優(yōu)先于配置(COC)”理念以及最佳實踐之路。 提供了針對日常企業(yè)應用研發(fā)各種場景的 spring-boot-starter 自動配置依賴模塊,如此多“開箱即用”的依賴模

    2024年01月24日
    瀏覽(28)
  • Spring Boot Starter Parent

    Spring Boot Starter Parent

    在這,您將學習了解 Spring Boot Starter Parent, 它是 Spring Boot 提供的父級 Pom 文件,旨在提供自動版本依賴管理,幫助我們輕松快速地進行?Spring Boot?開發(fā)。 通過 Spring Boot Starter Parent, 我們可以進行簡單便捷地包依賴管理。在 Spring Boot 每一個發(fā)行版中, 均提供了該版本所兼容的依

    2024年02月08日
    瀏覽(27)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領取紅包

二維碼2

領紅包