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

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

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

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

主要特點(diǎn)和功能如下

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

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

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

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

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

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

安全認(rèn)證:RestHighLevelClient 支持配置安全認(rèn)證信息,例如提供用戶名和密碼進(jìn)行身份驗(yàn)證。

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

RestHighLevelClient是一個(gè)功能強(qiáng)大的Java客戶端,可以輕松地與Elasticsearch集群進(jìn)行交互,并支持許多高級(jí)功能和配置選項(xiàng)。

來(lái)實(shí)操吧…

0. 引入依賴

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

1. 實(shí)例創(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對(duì)象 "name" 是需要?jiǎng)?chuàng)建的索引名 一般在項(xiàng)目中只創(chuàng)建一次 所以這里是寫死的
    CreateIndexRequest request = new CreateIndexRequest("name");
    // 2.準(zhǔn)備請(qǐng)求的參數(shù):DSL語(yǔ)句
    request.source(MAPPING_TEMPLATE, XContentType.JSON);
    // 3.發(fā)送請(qǐng)求
    CreateIndexResponse createIndexResponse = client.indices().create(request, RequestOptions.DEFAULT);
    tearDown();
    return createIndexResponse.isAcknowledged() ? "創(chuàng)建成功" : "創(chuàng)建失敗";
}

3. 測(cè)試索引庫(kù)存在不存在

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

4. 刪除索引庫(kù)

@RequestMapping("/testDeleteHotelIndex")
void testDeleteHotelIndex() throws IOException {
    setUp();
    // 1.創(chuàng)建Request對(duì)象
    DeleteIndexRequest request = new DeleteIndexRequest("索引名稱");
    // 2.發(fā)送請(qǐng)求
    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.準(zhǔn)備Request對(duì)象
        IndexRequest request = new IndexRequest("索引名稱").id(hotelDoc.getId().toString());
        // 2.準(zhǔn)備Json文檔
        request.source(jsonString, XContentType.JSON);
        // 3.發(fā)送請(qǐng)求
        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.準(zhǔn)備參數(shù),添加多個(gè)新增的Request
	for (Hotel hotel : hotels) {
		// 2.1.轉(zhuǎn)換為文檔類型HotelDoc
		HotelDoc hotelDoc = new HotelDoc(hotel);
		// 2.2.創(chuàng)建新增文檔的Request對(duì)象
		request.add(new IndexRequest("索引名稱")
			.id(hotelDoc.getId().toString())
			.source(JSON.toJSONString(hotelDoc), XContentType.JSON));
	}
	// 3.發(fā)送請(qǐng)求
	client.bulk(request, RequestOptions.DEFAULT);
	tearDown();
}

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

相關(guān)文章

  • java 高并發(fā)中volatile的實(shí)現(xiàn)原理

    java 高并發(fā)中volatile的實(shí)現(xiàn)原理

    這篇文章主要介紹了java 高并發(fā)中volatile的實(shí)現(xiàn)原理的相關(guān)資料,在多線程并發(fā)編程中synchronized和Volatile都扮演著重要的角色,Volatile是輕量級(jí)的synchronized,它在多處理器開發(fā)中保證了共享變量的“可見性”,需要的朋友可以參考下
    2017-03-03
  • java 兩個(gè)數(shù)組合并的幾種方法

    java 兩個(gè)數(shù)組合并的幾種方法

    本篇文章主要介紹了java 兩個(gè)數(shù)組合并的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-08-08
  • 基于logback 實(shí)現(xiàn)springboot超級(jí)詳細(xì)的日志配置

    基于logback 實(shí)現(xiàn)springboot超級(jí)詳細(xì)的日志配置

    java web 下有好幾種日志框架,比如:logback,log4j,log4j2(slj4f 并不是一種日志框架,它相當(dāng)于定義了規(guī)范,實(shí)現(xiàn)了這個(gè)規(guī)范的日志框架就能夠用 slj4f 調(diào)用)。這篇文章主要介紹了基于logback springboot超級(jí)詳細(xì)的日志配置,需要的朋友可以參考下
    2019-06-06
  • JAVA通過(guò)HttpClient發(fā)送HTTP請(qǐng)求的方法示例

    JAVA通過(guò)HttpClient發(fā)送HTTP請(qǐng)求的方法示例

    本篇文章主要介紹了JAVA通過(guò)HttpClient發(fā)送HTTP請(qǐng)求的方法示例,詳細(xì)的介紹了HttpClient使用,具有一定的參考價(jià)值,有興趣的可以了解一下
    2017-09-09
  • Java基于解釋器模式實(shí)現(xiàn)定義一種簡(jiǎn)單的語(yǔ)言功能示例

    Java基于解釋器模式實(shí)現(xiàn)定義一種簡(jiǎn)單的語(yǔ)言功能示例

    這篇文章主要介紹了Java基于解釋器模式實(shí)現(xiàn)定義一種簡(jiǎn)單的語(yǔ)言功能,簡(jiǎn)單描述了解釋器模式的概念、功能及Java使用解釋器模式定義一種簡(jiǎn)單語(yǔ)言的相關(guān)實(shí)現(xiàn)與使用技巧,需要的朋友可以參考下
    2018-05-05
  • SpringBoot靜態(tài)資源路徑配置及主頁(yè)顯示

    SpringBoot靜態(tài)資源路徑配置及主頁(yè)顯示

    這篇文章主要介紹了SpringBoot靜態(tài)資源路徑配置及主頁(yè)顯示,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-04-04
  • springboot中通過(guò)lua腳本來(lái)獲取序列號(hào)的方法

    springboot中通過(guò)lua腳本來(lái)獲取序列號(hào)的方法

    這篇文章主要介紹了springboot中通過(guò)lua腳本來(lái)獲取序列號(hào)的方法,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-06-06
  • Java Spring WEB應(yīng)用實(shí)例化如何實(shí)現(xiàn)

    Java Spring WEB應(yīng)用實(shí)例化如何實(shí)現(xiàn)

    這篇文章主要介紹了Java Spring WEB應(yīng)用實(shí)例化如何實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-12-12
  • Java多線程-線程的同步與鎖的問(wèn)題

    Java多線程-線程的同步與鎖的問(wèn)題

    線程的同步是為了防止多個(gè)線程訪問(wèn)一個(gè)數(shù)據(jù)對(duì)象時(shí),對(duì)數(shù)據(jù)造成的破壞。本篇文章主要介紹了Java多線程-線程的同步與鎖的問(wèn)題,有興趣的可以了解一下。
    2016-11-11
  • java應(yīng)用cpu飆升(超過(guò)100%)故障排查步驟

    java應(yīng)用cpu飆升(超過(guò)100%)故障排查步驟

    在Java并發(fā)編程計(jì)算密集型要進(jìn)行大量的計(jì)算、邏輯判斷等操作,消耗CPU資源,比如計(jì)算圓周率、對(duì)視頻進(jìn)行高清解碼等等,下面這篇文章主要給大家介紹了關(guān)于java應(yīng)用cpu飆升(超過(guò)100%)故障排查步驟的相關(guān)資料,需要的朋友可以參考下
    2023-06-06

最新評(píng)論