最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SpringBoot實現(xiàn)elasticsearch索引操作的代碼示例

 更新時間:2023年07月02日 09:05:42   作者:我有一顆五葉草  
這篇文章主要給大家介紹了SpringBoot如何實現(xiàn)elasticsearch 索引操作,文中有詳細的代碼示例,感興趣的同學(xué)可以參考閱讀下

RestHighLevelClient 是 Elasticsearch 官方提供的Java高級客戶端,用于與Elasticsearch集群進行交互和執(zhí)行各種操作。

主要特點和功能如下

強類型:RestHighLevelClient 提供了強類型的 API,可以在編碼過程中獲得更好的類型安全性和 IDE 支持。

兼容性:RestHighLevelClient 是 Elasticsearch 官方推薦的 Java 客戶端,在 Elasticsearch 版本升級時會保證與 Elasticsearch 的兼容性。

高級功能:RestHighLevelClient 支持 Elasticsearch 的所有高級功能,例如索引、搜索、聚合、分頁、批量操作、文檔更新、刪除等操作。

異步執(zhí)行:RestHighLevelClient 還支持異步方式執(zhí)行操作,可以通過提供的異步回調(diào)方法處理返回結(jié)果。

索引管理:RestHighLevelClient 提供了索引管理相關(guān)的 API,包括創(chuàng)建索引、映射定義、設(shè)置索引的分片和副本等操作。

搜索與聚合:RestHighLevelClient 支持復(fù)雜的搜索和聚合操作,可以使用查詢條件、過濾條件、排序、范圍查詢等來獲取所需的數(shù)據(jù)。

安全認證:RestHighLevelClient 支持配置安全認證信息,例如提供用戶名和密碼進行身份驗證。

執(zhí)行配置:RestHighLevelClient 可以配置連接超時、請求超時、重試策略等執(zhí)行參數(shù),以滿足特定的需求和優(yōu)化性能。

RestHighLevelClient是一個功能強大的Java客戶端,可以輕松地與Elasticsearch集群進行交互,并支持許多高級功能和配置選項。

來實操吧…

0. 引入依賴

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

1. 實例創(chuàng)建與關(guān)閉

private RestHighLevelClient client;
void setUp() {
    this.client = new RestHighLevelClient(RestClient.builder(
            HttpHost.create("http://IP:9200")
    ));
}
void tearDown() throws IOException {
    this.client.close();
}

2. 創(chuàng)建索引

@RequestMapping("/create")
public String createHotelIndex() throws IOException {
    setUp();
    // 1.創(chuàng)建Request對象 "name" 是需要創(chuàng)建的索引名 一般在項目中只創(chuàng)建一次 所以這里是寫死的
    CreateIndexRequest request = new CreateIndexRequest("name");
    // 2.準備請求的參數(shù):DSL語句
    request.source(MAPPING_TEMPLATE, XContentType.JSON);
    // 3.發(fā)送請求
    CreateIndexResponse createIndexResponse = client.indices().create(request, RequestOptions.DEFAULT);
    tearDown();
    return createIndexResponse.isAcknowledged() ? "創(chuàng)建成功" : "創(chuàng)建失敗";
}

3. 測試索引庫存在不存在

@RequestMapping("/testExistsHotelIndex/{indexName}")
public String testExistsHotelIndex(@PathVariable("indexName") String indexName) throws IOException {
	setUp();
	// 1.創(chuàng)建Request對象
	GetIndexRequest request = new GetIndexRequest(indexName);
	// 2.發(fā)送請求
	boolean exists = client.indices().exists(request, RequestOptions.DEFAULT);
	tearDown();
	return exists ? "索引庫已經(jīng)存在!" : "索引庫不存在!";
}

4. 刪除索引庫

@RequestMapping("/testDeleteHotelIndex")
void testDeleteHotelIndex() throws IOException {
    setUp();
    // 1.創(chuàng)建Request對象
    DeleteIndexRequest request = new DeleteIndexRequest("索引名稱");
    // 2.發(fā)送請求
    client.indices().delete(request, RequestOptions.DEFAULT);
    tearDown();
}

5. 遍歷導(dǎo)入數(shù)據(jù)

不建議遍歷導(dǎo)入,這樣效率低低

@RequestMapping("/addAll")
public List<HotelDoc> addAll() throws IOException {
    List<Hotel> list = hotelService.list();
    List<HotelDoc> docList = list.stream().map(p -> new HotelDoc(p)).collect(Collectors.toList());
    setUp();
    for (HotelDoc hotelDoc : docList) {
        String jsonString = JSON.toJSONString(hotelDoc);
        // 1.準備Request對象
        IndexRequest request = new IndexRequest("索引名稱").id(hotelDoc.getId().toString());
        // 2.準備Json文檔
        request.source(jsonString, XContentType.JSON);
        // 3.發(fā)送請求
        IndexResponse index = client.index(request, RequestOptions.DEFAULT);
        System.out.println(hotelDoc.getName() + ":" + index.status());
    }
    tearDown();
    return null;
}

6. 批量導(dǎo)入數(shù)據(jù)(推薦)

@RequestMapping("/testBulkRequest")
public void testBulkRequest() throws IOException {
	List<Hotel> hotels = hotelService.list();
	setUp();
	// 1.創(chuàng)建Request
	BulkRequest request = new BulkRequest();
	// 2.準備參數(shù),添加多個新增的Request
	for (Hotel hotel : hotels) {
		// 2.1.轉(zhuǎn)換為文檔類型HotelDoc
		HotelDoc hotelDoc = new HotelDoc(hotel);
		// 2.2.創(chuàng)建新增文檔的Request對象
		request.add(new IndexRequest("索引名稱")
			.id(hotelDoc.getId().toString())
			.source(JSON.toJSONString(hotelDoc), XContentType.JSON));
	}
	// 3.發(fā)送請求
	client.bulk(request, RequestOptions.DEFAULT);
	tearDown();
}

到此這篇關(guān)于SpringBoot實現(xiàn)elasticsearch索引操作的代碼示例的文章就介紹到這了,更多相關(guān)SpringBoot elasticsearch索引操作內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Spring Boot下的Job定時任務(wù)

    Spring Boot下的Job定時任務(wù)

    編寫Job定時執(zhí)行任務(wù)十分有用,能解決很多問題,這次實習(xí)的項目里做了一下系統(tǒng)定時更新三方系統(tǒng)訂單狀態(tài)的功能,這里用到了Spring的定時任務(wù)使用的非常方便,下面總結(jié)一下如何使用,感興趣的朋友參考下吧
    2017-05-05
  • Spring Boot實戰(zhàn)之靜態(tài)資源處理

    Spring Boot實戰(zhàn)之靜態(tài)資源處理

    這篇文章主要介紹了Spring Boot實戰(zhàn)之靜態(tài)資源處理,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-01-01
  • Java通過Lambda表達式實現(xiàn)簡化代碼

    Java通過Lambda表達式實現(xiàn)簡化代碼

    我們在編寫代碼時,常常會遇到代碼又長又重復(fù)的情況,就像調(diào)用第3方服務(wù)時,每個方法都差不多,?寫起來啰嗦,?改起來麻煩,?還容易改漏,所以本文就來用Lambda表達式簡化一下代碼,希望對大家有所幫助
    2023-05-05
  • Netty中的心跳檢測機制詳解

    Netty中的心跳檢測機制詳解

    這篇文章主要介紹了Netty中的心跳檢測機制詳解,Netty 是 基于 TCP 協(xié)議開發(fā)的,在四層協(xié)議 TCP 協(xié)議的實現(xiàn)中也提供了 keepalive 報文用來探測對端是否可用,TCP 層將在定時時間到后發(fā)送相應(yīng)的 KeepAlive 探針以確定連接可用性,需要的朋友可以參考下
    2023-12-12
  • AutoScan Spring Boot 項目底座跨包掃描的終極解決方案全解析

    AutoScan Spring Boot 項目底座跨包掃描的終極解決方案全解析

    文章介紹了autoscan-spring-boot-starter,這是一種為解決企業(yè)級SpringBoot開發(fā)中跨包掃描問題而設(shè)計的解決方案,本文通過實例代碼給大家介紹的非常詳細感興趣的朋友跟隨小編一起看看吧
    2026-03-03
  • Java8中時區(qū)與不同歷法處理指南

    Java8中時區(qū)與不同歷法處理指南

    Java?8?的?java.time?API?不僅修復(fù)了舊版日期時間?API?的設(shè)計缺陷,還提供了對時區(qū)和多歷法的全面支持,下面小編就來講講具體的處理操作,有需要的可以了解下
    2025-04-04
  • 基于Java的Scoket編程

    基于Java的Scoket編程

    本文詳細講解了基于Java的Scoket編程,文中通過示例代碼介紹的非常詳細。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-12-12
  • 一文解讀java.nio.ByteBuffer

    一文解讀java.nio.ByteBuffer

    這篇文章主要介紹了java.nio.ByteBuffer的用法解讀,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • Spring Cloud Gateway 如何修改HTTP響應(yīng)信息

    Spring Cloud Gateway 如何修改HTTP響應(yīng)信息

    這篇文章主要介紹了Spring Cloud Gateway 修改HTTP響應(yīng)信息的方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • java模擬客戶端向服務(wù)器上傳文件

    java模擬客戶端向服務(wù)器上傳文件

    這篇文章主要為大家詳細介紹了java模擬客戶端向服務(wù)器上傳文件,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-10-10

最新評論

渭源县| 宜兰市| 娄烦县| 淳安县| 铁力市| 收藏| 南投县| 德江县| 广东省| 莱州市| 依安县| 临泽县| 宜黄县| 马边| 湘阴县| 逊克县| 鄂温| 广东省| 马鞍山市| 长乐市| 沙河市| 鹤岗市| 青铜峡市| 东兴市| 东台市| 黑水县| 龙泉市| 大邑县| 得荣县| 洛浦县| 陇西县| 宝坻区| 龙南县| 昭平县| 金沙县| 永年县| 南昌市| 株洲县| 陆河县| 田林县| 仁寿县|