JavaRestClient 客戶端初始化+索引庫操作

1. 介紹

ES官方提供了各種不同語言的客戶端,用來操作ES。這些客戶端的本質就是組裝DSL語句,通過http請求發送給ES。

Elasticsearch目前最新版本是8.0,其java客戶端有很大變化。不過大多數企業使用的還是8以下版本


2. 客戶端初始化

在elasticsearch提供的API中,與elasticsearch一切交互都封裝在一個名為RestHighLevelClient的類中,必須先完成這個對象的初始化建立與elasticsearch的連接

下面就使用黑馬商城作為示例進行一個改造

2.1 步驟

2.1.1 導入依賴

item-service商品模塊導入該依賴

代碼如下:

  <!--ElasticSearch--><dependency><groupId>org.elasticsearch.client</groupId><artifactId>elasticsearch-rest-high-level-client</artifactId></dependency>

2.1.2? 覆蓋SpringBoot默認的ES版本

父工程hmall進行修改,由于SpringBoot默認的ES版本是7.17.10,所以我們需要覆蓋默認的ES版本

properties標簽中添加elasticsearch-version7.12.1版本


2.1.3??初始化RestHighLevelClient

寫一個單元測試進行連接

寫三個方法,分別是初始化、結束、測試連接方法

快捷鍵生成:按下Alt+Insert生成以上三個方法


?啟動測試連接方法


3. 索引庫操作

在之前寫的單元測試中進行索引庫操作

?代碼如下:

package com.hmall.item.es;import org.apache.http.HttpHost;
import org.elasticsearch.action.admin.indices.delete.DeleteIndexRequest;
import org.elasticsearch.action.support.master.AcknowledgedResponse;
import org.elasticsearch.client.RequestOptions;
import org.elasticsearch.client.RestClient;
import org.elasticsearch.client.RestHighLevelClient;
import org.elasticsearch.client.indices.CreateIndexRequest;
import org.elasticsearch.client.indices.GetIndexRequest;
import org.elasticsearch.common.xcontent.XContentType;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;import java.io.IOException;/*
RestHighLevelClient 客戶端初始化  索引庫操作 增刪查測試
*/
public class ElasticIndexTest {private RestHighLevelClient client;// 測試連接@Testvoid testConnection() {System.out.println("client=" + client);}// 初始化方法@BeforeEachvoid setUp() {client = new RestHighLevelClient(RestClient.builder(HttpHost.create("http://192.168.115.15:9200")));}//結束方法@AfterEachvoid tearDown() throws IOException {if (client != null) {client.close();}}//創建索引庫@Testvoid testCreateIndex() throws IOException {//1. 準備Request對象CreateIndexRequest request = new CreateIndexRequest("items");//2. 準備請求參數request.source(MAPPING_TEMPLATE, XContentType.JSON);//3. 發送請求client.indices().create(request, RequestOptions.DEFAULT);}// 查詢索引庫是否存在@Testvoid testGetIndex() throws IOException {//1. 準備Request對象GetIndexRequest request = new GetIndexRequest("items");//2. 發送請求boolean exists = client.indices().exists(request, RequestOptions.DEFAULT);System.out.println("exists======================" + exists);}//刪除索引庫@Testvoid testDeleteIndex() throws IOException {//1. 準備Request對象DeleteIndexRequest request = new DeleteIndexRequest("items");//2. 發送請求AcknowledgedResponse delete = client.indices().delete(request, RequestOptions.DEFAULT);System.out.println("delete------------------------->" + delete.isAcknowledged());}// 索引庫映射private static final String MAPPING_TEMPLATE = "{\n" +"  \"mappings\": {\n" +"    \"properties\": {\n" +"      \"id\": {\n" +"        \"type\": \"keyword\"\n" +"      },\n" +"      \"name\": {\n" +"        \"type\": \"text\",\n" +"        \"analyzer\": \"ik_smart\"\n" +"      },\n" +"      \"price\": {\n" +"        \"type\": \"integer\"\n" +"      },\n" +"      \"image\": {\n" +"        \"type\": \"keyword\",\n" +"        \"index\": false\n" +"      },\n" +"      \"category\": {\n" +"        \"type\": \"keyword\"\n" +"      },\n" +"      \"brand\": {\n" +"        \"type\": \"keyword\"\n" +"      },\n" +"      \"sold\": {\n" +"        \"type\": \"integer\"\n" +"      },\n" +"      \"commentCount\": {\n" +"        \"type\": \"integer\",\n" +"        \"index\": false\n" +"      },\n" +"      \"isAD\": {\n" +"        \"type\": \"boolean\"\n" +"      },\n" +"      \"updateTime\": {\n" +"        \"type\": \"date\"\n" +"      }\n" +"    }\n" +"  }\n" +"}";
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/65889.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/65889.shtml
英文地址,請注明出處:http://en.pswp.cn/web/65889.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【JVM-2.2】使用JConsole監控和管理Java應用程序:從入門到精通

在Java應用程序的開發和運維過程中&#xff0c;監控和管理應用程序的性能和資源使用情況是非常重要的。JConsole是Java Development Kit&#xff08;JDK&#xff09;自帶的一款圖形化監控工具&#xff0c;它可以幫助開發者實時監控Java應用程序的內存、線程、類加載以及垃圾回收…

基于html5實現音樂錄音播放動畫源碼

源碼介紹 基于html5實現音樂錄音播放動畫源碼是一款類似Shazam的UI&#xff0c;點擊按鈕后&#xff0c;會變成為一個監聽按鈕。旁邊會有音符飛入這個監聽按鈕&#xff0c;最后轉換成一個音樂播放器。 效果預覽 源碼獲取 基于html5實現音樂錄音播放動畫源碼

《自動駕駛與機器人中的SLAM技術》ch1:自動駕駛

目錄 1.1 自動駕駛技術 1.2 自動駕駛中的定位與地圖 1.1 自動駕駛技術 1.2 自動駕駛中的定位與地圖 L2 在技術實現上會更傾向于實時感知&#xff0c;乃至可以使用感知結果直接構建鳥瞰圖&#xff08;bird eye view, BEV&#xff09;&#xff0c;而 L4 則依賴離線地圖。 高精地…

抖音矩陣是什么

抖音矩陣是指在同一品牌或個人IP下&#xff0c;通過創建多個不同定位的抖音賬號&#xff08;如主號、副號、子號等&#xff09;&#xff0c;形成一個有機的整體&#xff0c;以實現多維度、多層次的內容覆蓋和用戶互動。以下是關于抖音矩陣的詳細介紹&#xff1a; 抖音矩陣的類…

【開發日記】Docker修改國內鏡像源

1、問題&#xff1a; docker pull鏡像時提示以下內容&#xff1a; Error response from daemon: Get "https://registry-1.docker.io/v2/": net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)2、解決 ①…

Centos7 解決Maven scope=system依賴jar包沒有打包到啟動jar包中的問題(OpenCV-4.10)

最近項目中遇到問題,OpenCV的Jar包在程序打包后,找不到相關的類,比如MAT,這個時候懷疑OpenCV_4.10的Jar沒有和應用程序一起打包,后面排查到確實是沒有打包進去,特此記錄,便于日后查閱。 <!-- 加載lib目錄下的opencv包 --> <dependency><groupId>org…

【后端面試總結】Golang可能的內存泄漏場景及應對策略

Golang可能的內存泄漏場景及應對策略 一、引言 Golang作為一種高性能、并發友好的編程語言&#xff0c;其內置的垃圾回收機制極大地簡化了內存管理。然而&#xff0c;這并不意味著開發者可以完全忽視內存泄漏問題。在實際開發中&#xff0c;由于不當的資源管理、循環引用、以…

【LeetCode】:刪除回文子數組【困難】

class Solution { public:// 思考:能否用滾動數組進行優化int minimumMoves(vector<int>& arr) {// 定義狀態dp[i][j]為i-j的最小步數int n arr.size();vector<vector<int>> dp(n, vector<int>(n, 1e9 7));// 可以把這 1 次理解為一種 最小操作單…

ChatGPT入門之文本情緒識別:先了解LSTM如何處理文字序列

文章目錄 0. 首先聊聊什么是RNN1. 理解LSTM&#xff0c;從數據如何喂給 LSTM開始2. LSTM每個門是如何處理序列數據的&#xff1f;2.1 遺忘門&#xff08;Forget Gate&#xff09;&#xff1a;該忘掉哪些信息&#xff1f;2.2 輸入門&#xff08;Input Gate&#xff09;&#xff…

AI學習路線圖-邱錫鵬-神經網絡與深度學習

1 需求 神經網絡與深度學習 2 接口 3 示例 4 參考資料

C#用直線和曲線抗鋸齒

使用 GDI 繪制一條線時&#xff0c;要提供線條的起點和終點&#xff0c;但不必提供有關線條上各個像素的任何信息。 GDI 與顯示驅動程序軟件協同工作&#xff0c;確定將打開哪些像素以在特定顯示設備上顯示該線條。 效果對比 代碼實現 關鍵代碼 e.Graphics.SmoothingMode Sm…

【opencv】第8章 圖像輪廓與圖像分割修復

8.1 查找并繪制輪廓 一個輪廓一般對應一系列的點&#xff0c;也就是圖像中的一條曲線。其表示方法可能 根據不同的情況而有所不同。在OpenCV 中&#xff0c;可以用findContours()函數從二值圖 像中查找輪廓 8.1.1 尋找輪廓&#xff1a; findContours() 函數 findContours) 函…

基于文件系統分布式鎖原理

分布式鎖&#xff1a;在一個公共的存儲服務上打上一個標記&#xff0c;如Redis的setnx命令&#xff0c;是先到先得方式獲得鎖&#xff0c;ZooKeeper有點像下面的demo,比較大小的方式判決誰獲得鎖。 package com.ldj.mybatisflex.demo;import java.util.*; import java.util.co…

Unity 大地圖功能 離線瓦片地圖

不使用第二個攝像機實現類似開放世界的大地圖功能。 功能如下&#xff1a; 按下M鍵打開/關閉大地圖功能 打開大地圖時&#xff0c;默認玩家位置居中 大地圖支持拖拽&#xff0c;可調節拖拽速度&#xff0c;支持XY軸翻轉 支持大地圖設置邊緣偏移量 可設置是否啟動拖拽邊界 …

Bootstrap 前端 UI 框架

Bootstrap官網&#xff1a;Bootstrap中文網 鉑特優選 Bootstrap 下載 點擊進入中文文檔 點擊下載 生產文件是開發響應式網頁應用&#xff0c;源碼是底層邏輯代碼&#xff0c;因為是要制作響應式網頁&#xff0c;所以下載開發文件 引入 css 文件&#xff0c; bootstrap.css 和 …

記一次sealos部署k8s集群之delete了第一臺master如何恢復

記一次sealos部署k8s集群之delete了第一臺master如何恢復 一、背景描述 使用sealos部署了一套K8S集群 master信息:172.27.100.1、172.27.100.2、172.27.100.3 node信息:172.27.100.4、172.27.100.5 sealos安裝在172.27.100.1節點,根目錄下/root/.sealos/文件還在! [root…

error: linker `link.exe` not found

開始學習rust&#xff0c;安裝好rust的環境&#xff0c;開始從hello world開始&#xff0c;結果用在win10環境下&#xff0c;使用vs code或cmd窗口編譯rust報錯&#xff1a; PS E:\study_codes\rust-demo\chart01> rustc hello.rs error: linker link.exe not found| note:…

用 HTML5 Canvas 和 JavaScript 實現雪花飄落特效

這篇文章將帶您深入解析使用 HTML5 Canvas 和 JavaScript 實現動態雪花特效的代碼原理。 1,效果展示 該效果模擬了雪花從天而降的動態場景,具有以下特點: 雪花數量、大小、透明度和下落速度隨機。雪花會在屏幕底部重置到頂部,形成循環效果。隨窗口大小動態調整,始終覆蓋…

django基于Python的校園個人閑置物品換購平臺

Django 基于 Python 的校園個人閑置物品換購平臺 一、平臺概述 Django 基于 Python 的校園個人閑置物品換購平臺是專為校園師生打造的一個便捷、環保且充滿活力的線上交易場所。它借助 Django 這一強大的 Python Web 開發框架&#xff0c;整合了校園內豐富的閑置物品資源&…

【Vim Masterclass 筆記10】S06L23:Vim 核心操作訓練之 —— 文本的搜索、查找與替換操作(第二部分)

文章目錄 S06L23 Search, Find, and Replace - Part Two1 文本替換命令 :s/old/new/2 指定范圍的文本替換3 特例&#xff1a;路徑的替換4 文件行號的配置5 要點總結&#xff08;1&#xff09;搜索當前行&#xff08;Same Line Searching&#xff09;&#xff08;2&#xff09;跨…