欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

SpringBoot整合(ES)ElasticSearch7.8實踐

 更新時間:2025年07月16日 14:29:33   作者:wangshili程序員  
本文詳細(xì)介紹了SpringBoot整合ElasticSearch7.8的教程,涵蓋依賴添加、客戶端初始化、索引創(chuàng)建與獲取、批量插入數(shù)據(jù)等核心步驟,結(jié)合官方文檔指引及Lombok簡化實體類配置,提供完整實踐方案

SpringBoot整合ElasticSearch7.8

所有的教程都參考于官方文檔,這里給大家說明文檔位置,搜索elasticsearch官網(wǎng)的Docs界面,找到ElasticSearch Client這個選項,圖中也有位置,根據(jù)圖中的位置找就行了。

前提是要安裝好ES,挺簡單的,這里就不說了。

添加依賴

根據(jù)官方文檔導(dǎo)入對應(yīng)架包

<dependency>
    <groupId>org.elasticsearch.client</groupId>
    <artifactId>elasticsearch-rest-high-level-client</artifactId>
    <version>7.8.1</version>
</dependency>

初始化

RestHighLevelClient client = new RestHighLevelClient(
        RestClient.builder(
                new HttpHost("localhost", 9200, "http"),
                new HttpHost("localhost", 9201, "http")));
//使用完后關(guān)閉資源
client.close();

所有的方法都在RestHighLevelClient類中了,直接去使用即可

創(chuàng)建SpringBoot項目

SpringBoot中已經(jīng)有了starter,直接選擇NoSQL里面導(dǎo)入啟動依賴就可以了

創(chuàng)建配置類

@Configuration
public class ElasticConfig {

    @Bean
    public RestHighLevelClient getRestHighLevelClient(){
        RestHighLevelClient client = new RestHighLevelClient(
                //如果是集群再配置多個
                RestClient.builder(new HttpHost("127.0.0.1",9200,"http"))
        );

        return client;
    }
}

測試案例

創(chuàng)建索引

查看官方手冊

可以看到很多的API,我們試試索引API,點擊Index APIs

第一個是創(chuàng)建索引的簡單方式,創(chuàng)建完成后還要發(fā)送指令過去,發(fā)送方式拉到最下就可以看到一個同步和異步的發(fā)送,我們使用同步就行了。

我們直接在test目錄測試下

@SpringBootTest
class ElasticsearchDemoApplicationTests {

    @Test
    void contextLoads() {
    }

    @Qualifier("getRestHighLevelClient")
    @Autowired
    private RestHighLevelClient client;

    /**
     * 創(chuàng)建索引
     */
    @Test
    public void test1(){
        //注意索引名要小寫
        CreateIndexRequest request = new CreateIndexRequest("springboot_es_test1");
        try {
            CreateIndexResponse createIndexResponse = client.indices().create(request, RequestOptions.DEFAULT);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

如果執(zhí)行不報錯,那就可以打開可視化工具查看或者kibana去查看索引創(chuàng)建情況

獲取索引

我們也可以直接通過java代碼獲取索引去檢測,這個代碼也是可以從官方獲取的

 /**
     * 獲取索引
     */
    @Test
    public void test2(){
        GetIndexRequest request = new GetIndexRequest("springboot_es_test1");
        try {
            boolean exists = client.indices().exists(request, RequestOptions.DEFAULT);
            System.out.println(exists);
        } catch (IOException e) {
            e.printStackTrace();
        }

    }

創(chuàng)建索引并加入對象的屬性和值

1、查看官方案例

2、創(chuàng)建實體類

這里使用的lombok,不會使用的小伙伴手動添加get/set全參構(gòu)造和無參構(gòu)造方法

@Data
@NoArgsConstructor
@AllArgsConstructor
public class User {
    private String username;
    private Integer age;
}

3、測試方法

 /**
     * 測試對象的操作
     */
    @Test
    public void test3(){
        //創(chuàng)建對象
        User user = new User("測試", 13);

        IndexRequest request = new IndexRequest("posts");
        request.id("1");
        //對象轉(zhuǎn)為json
        request.source(JSON.toJSON(user), XContentType.JSON);

        try {
            //發(fā)送
            IndexResponse indexResponse = client.index(request, RequestOptions.DEFAULT);
            //獲取索引內(nèi)容看看
            GetRequest getRequest = new GetRequest("posts","1");
            GetResponse getResponse = client.get(getRequest, RequestOptions.DEFAULT);
            System.out.println(getResponse);
        } catch (IOException e) {
            e.printStackTrace();
        }

    }

批量插入數(shù)據(jù)

真實的項目一般都是大批量的插入數(shù)據(jù),比如從數(shù)據(jù)庫中、消息隊列或者緩存中獲取數(shù)據(jù)插入等等,ES也提供了批量插入的方法,BulkRequest類。

    /**
     * 設(shè)置批量插入
     */
    @Test
    public void test4(){
        //創(chuàng)建批量請求
        BulkRequest bulkRequest = new BulkRequest();
        //超時時間
        bulkRequest.timeout("10s");
        //模擬數(shù)據(jù)
        ArrayList<User> users = new ArrayList<>();
        users.add(new User("張1",1));
        users.add(new User("張2",2));
        users.add(new User("張3",3));
        users.add(new User("張4",4));
        int i=0 ;
        //批量插入
        for(User user:users){
            bulkRequest.add(
                    new IndexRequest("test2")
                            .id(""+i++)
                            .source(JSON.toJSONString(user), XContentType.JSON)
            );
        }
        try {
            //發(fā)送請求
            BulkResponse bulk = client.bulk(bulkRequest, RequestOptions.DEFAULT);
            //獲取是否失敗標(biāo)志
            System.out.println(bulk.hasFailures());
        } catch (IOException e) {
            e.printStackTrace();
        }

    }

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • mybatis-plus分頁如何接收前端參數(shù)limit和page

    mybatis-plus分頁如何接收前端參數(shù)limit和page

    這篇文章主要介紹了mybatis-plus分頁如何接收前端參數(shù)limit和page,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-01-01
  • json轉(zhuǎn)換成java對象示例

    json轉(zhuǎn)換成java對象示例

    這篇文章主要介紹了json轉(zhuǎn)換成java對象示例,需要的朋友可以參考下
    2014-04-04
  • Spring?Retry優(yōu)雅地實現(xiàn)方法重試機(jī)制

    Spring?Retry優(yōu)雅地實現(xiàn)方法重試機(jī)制

    Spring?Retry?是?Spring?提供的一個模塊,它可以幫助我們以聲明式的方式為方法添加重試功能,從而提升系統(tǒng)的健壯性和可用性,下面我們就來看看如何使用Spring?Retry實現(xiàn)方法重試機(jī)制吧
    2025-06-06
  • Java中List遍歷刪除元素remove()的方法

    Java中List遍歷刪除元素remove()的方法

    這篇文章主要介紹了Java中List遍歷刪除元素remove()的方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • Java集合之LinkedList源碼解析

    Java集合之LinkedList源碼解析

    這篇文章主要介紹了Java集合之LinkedList源碼解析,LinkedList和ArrayList數(shù)據(jù)結(jié)構(gòu)是完全不一樣的,ArrayList 底層是數(shù)組的結(jié)構(gòu),而 LinkedList 的底層則是鏈表的結(jié)構(gòu), 它可以進(jìn)行高效的插入和移除的操作,它基于的是一個雙向鏈表的結(jié)構(gòu),需要的朋友可以參考下
    2023-12-12
  • Spring?Boot多個定時任務(wù)阻塞問題的解決方法

    Spring?Boot多個定時任務(wù)阻塞問題的解決方法

    在日常的項目開發(fā)中,往往會涉及到一些需要做到定時執(zhí)行的代碼,下面這篇文章主要給大家介紹了關(guān)于Spring?Boot多個定時任務(wù)阻塞問題的解決方法,需要的朋友可以參考下
    2022-01-01
  • List對象去重和按照某個字段排序的實現(xiàn)方法

    List對象去重和按照某個字段排序的實現(xiàn)方法

    下面小編就為大家?guī)硪黄狶ist對象去重和按照某個字段排序的實現(xiàn)方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-05-05
  • Java調(diào)用Python腳本傳遞數(shù)據(jù)并返回計算結(jié)果

    Java調(diào)用Python腳本傳遞數(shù)據(jù)并返回計算結(jié)果

    實際工程項目中可能會用到Java和python兩種語言結(jié)合進(jìn)行,這樣就會涉及到一個問題,Java如何調(diào)用Python腳本,感興趣的可以了解一下
    2021-05-05
  • Java截取字符串的方法

    Java截取字符串的方法

    這篇文章主要介紹了Java截取字符串的方法,實例分析了java中substring方法的使用技巧,需要的朋友可以參考下
    2015-05-05
  • Java字符串寫入文件三種方式的實現(xiàn)

    Java字符串寫入文件三種方式的實現(xiàn)

    這篇文章主要介紹了 Java字符串寫入文件三種方式的實現(xiàn)的相關(guān)資料,需要的朋友可以參考下
    2017-06-06

最新評論