【黑馬SpringCloud微服務開發與實戰】(九)elasticsearch基礎

1. 認識elasticsearch

在這里插入圖片描述

在這里插入圖片描述

2. 認識和安裝ES

在這里插入圖片描述

在這里插入圖片描述

在這里插入圖片描述
主播這里之前已經安裝好了,資料包里面有鏡像

docker run -d \--name es \-e "ES_JAVA_OPTS=-Xms512m -Xmx512m" \-e "discovery.type=single-node" \-v es-data:/usr/share/elasticsearch/data \-v es-plugins:/usr/share/elasticsearch/plugins \--privileged \--network hm-net \-p 9200:9200 \-p 9300:9300 \elasticsearch:7.12.1

在這里插入圖片描述
在這里插入圖片描述
http://192.168.10.100:9200/

在這里插入圖片描述

docker run -d \
--name kibana \
-e ELASTICSEARCH_HOSTS=http://es:9200 \
--network=hm-net \
-p 5601:5601  \
kibana:7.12.1

在這里插入圖片描述

在這里插入圖片描述

3. 倒排索引

在這里插入圖片描述

在這里插入圖片描述

在這里插入圖片描述

4. IK分詞器

在這里插入圖片描述

在這里插入圖片描述

在這里插入圖片描述

在這里插入圖片描述

在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述

在這里插入圖片描述

5. ES基本概念

在這里插入圖片描述

在這里插入圖片描述
在這里插入圖片描述

6. 索引庫操作——Mapping映射屬性

在這里插入圖片描述

7. 索引庫操作——索引庫的CRUD

在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述

在這里插入圖片描述

在這里插入圖片描述

在這里插入圖片描述

8. 文檔操作——文檔的CRUD

在這里插入圖片描述

在這里插入圖片描述

在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述

在這里插入圖片描述

在這里插入圖片描述

9. 文檔操作——批量處理

在這里插入圖片描述

10. JavaRestClient——客戶端初始化

在這里插入圖片描述

<dependency><groupId>org.elasticsearch.client</groupId><artifactId>elasticsearch-rest-high-level-client</artifactId>
</dependency>
  <properties><maven.compiler.source>11</maven.compiler.source><maven.compiler.target>11</maven.compiler.target><elasticsearch.version>7.12.1</elasticsearch.version></properties>
RestHighLevelClient client = new RestHighLevelClient(RestClient.builder(HttpHost.create("http://192.168.150.101:9200")
));

在這里插入圖片描述

11. JavaRestClient——商品的mapping映射

在這里插入圖片描述

PUT /items
{"mappings": {"properties": {"id": {"type": "keyword"},"name":{"type": "text","analyzer": "ik_max_word"},"price":{"type": "integer"},"stock":{"type": "integer"},"image":{"type": "keyword","index": false},"category":{"type": "keyword"},"brand":{"type": "keyword"},"sold":{"type": "integer"},"commentCount":{"type": "integer","index": false},"isAD":{"type": "boolean"},"updateTime":{"type": "date"}}}
}

12. JavaRestClient——索引庫操作

在這里插入圖片描述

在這里插入圖片描述

在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述

在這里插入圖片描述

13. JavaRestClient——新增文檔

在這里插入圖片描述

package com.hmall.item.domain.po;import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;import java.time.LocalDateTime;@Data
@ApiModel(description = "索引庫實體")
public class ItemDoc{@ApiModelProperty("商品id")private String id;@ApiModelProperty("商品名稱")private String name;@ApiModelProperty("價格(分)")private Integer price;@ApiModelProperty("商品圖片")private String image;@ApiModelProperty("類目名稱")private String category;@ApiModelProperty("品牌名稱")private String brand;@ApiModelProperty("銷量")private Integer sold;@ApiModelProperty("評論數")private Integer commentCount;@ApiModelProperty("是否是推廣廣告,true/false")private Boolean isAD;@ApiModelProperty("更新時間")private LocalDateTime updateTime;
}

在這里插入圖片描述

@Test
void testAddDocument() throws IOException {// 1.根據id查詢商品數據Item item = itemService.getById(100002644680L);// 2.轉換為文檔類型ItemDoc itemDoc = BeanUtil.copyProperties(item, ItemDoc.class);// 3.將ItemDTO轉jsonString doc = JSONUtil.toJsonStr(itemDoc);// 1.準備Request對象IndexRequest request = new IndexRequest("items").id(itemDoc.getId());// 2.準備Json文檔request.source(doc, XContentType.JSON);// 3.發送請求client.index(request, RequestOptions.DEFAULT);
}

13. JavaRestClient——文檔的CRUD

在這里插入圖片描述

@Test
void testGetDocumentById() throws IOException {// 1.準備Request對象GetRequest request = new GetRequest("items").id("100002644680");// 2.發送請求GetResponse response = client.get(request, RequestOptions.DEFAULT);// 3.獲取響應結果中的sourceString json = response.getSourceAsString();ItemDoc itemDoc = JSONUtil.toBean(json, ItemDoc.class);System.out.println("itemDoc= " + ItemDoc);
}

刪除文檔

@Test
void testDeleteDocument() throws IOException {// 1.準備Request,兩個參數,第一個是索引庫名,第二個是文檔idDeleteRequest request = new DeleteRequest("item", "100002644680");// 2.發送請求client.delete(request, RequestOptions.DEFAULT);
}

局部更新
在這里插入圖片描述

@Test
void testUpdateDocument() throws IOException {// 1.準備RequestUpdateRequest request = new UpdateRequest("items", "100002644680");// 2.準備請求參數request.doc("price", 58800,"commentCount", 1);// 3.發送請求client.update(request, RequestOptions.DEFAULT);
}

在這里插入圖片描述

14. JavaRestClient——文檔批處理

在這里插入圖片描述

在這里插入圖片描述

@Test
void testBulk() throws IOException {// 1.創建RequestBulkRequest request = new BulkRequest();// 2.準備請求參數request.add(new IndexRequest("items").id("1").source("json doc1", XContentType.JSON));request.add(new IndexRequest("items").id("2").source("json doc2", XContentType.JSON));// 3.發送請求client.bulk(request, RequestOptions.DEFAULT);
}

真數據

@Test
void testLoadItemDocs() throws IOException {// 分頁查詢商品數據int pageNo = 1;int size = 1000;while (true) {Page<Item> page = itemService.lambdaQuery().eq(Item::getStatus, 1).page(new Page<Item>(pageNo, size));// 非空校驗List<Item> items = page.getRecords();if (CollUtils.isEmpty(items)) {return;}log.info("加載第{}頁數據,共{}條", pageNo, items.size());// 1.創建RequestBulkRequest request = new BulkRequest("items");// 2.準備參數,添加多個新增的Requestfor (Item item : items) {// 2.1.轉換為文檔類型ItemDTOItemDoc itemDoc = BeanUtil.copyProperties(item, ItemDoc.class);// 2.2.創建新增文檔的Request對象request.add(new IndexRequest().id(itemDoc.getId()).source(JSONUtil.toJsonStr(itemDoc), XContentType.JSON));}// 3.發送請求client.bulk(request, RequestOptions.DEFAULT);// 翻頁pageNo++;}
}

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

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

相關文章

由淺入深地講清楚瀏覽器緩存

一、什么是瀏覽器緩存&#xff1f;&#xff08;入門級&#xff09; 1. 瀏覽器緩存的定義瀏覽器緩存就是&#xff1a;瀏覽器把之前請求過的資源保存起來&#xff0c;下次訪問同樣的資源時可以直接用本地副本&#xff0c;而不是重新請求服務器。舉個生活例子&#xff1a; 你第一次…

Linux I/O 多路復用機制對比分析:poll/ppoll/epoll/select

Linux I/O 多路復用機制對比分析&#xff1a;poll/ppoll/epoll/select 1. 概述 I/O 多路復用是現代高性能網絡編程的核心技術&#xff0c;它允許單個線程同時監視多個文件描述符的狀態變化&#xff0c;從而實現高效的并發處理。Linux 提供了多種 I/O 多路復用機制&#xff0c…

高防服務器租用:保障數據安全

您的網絡速度是否卡頓&#xff0c;業務是否經常受到網絡攻擊的威脅呢&#xff1f;別擔心&#xff0c;高防服務器租用能夠幫助你解決這些困擾&#xff01;高防服務器租用擁有著卓越的防御能力&#xff0c;可以幫助企業抵御各種網絡攻擊&#xff0c;能夠輕松化解各種超大流量的網…

基于python多光譜遙感數據處理、圖像分類、定量評估及機器學習方法應用

基于衛星或無人機平臺的多光譜數據在地質、土壤調查和農業等應用領域發揮了重要作用&#xff0c;在地質應用方面&#xff0c;綜合Aster的短波紅外波段、landsat熱紅外波段等多光譜數據&#xff0c;可以通過不同的多光譜數據組合&#xff0c;協同用于礦物信息有效提取。第一&…

CSS content-visibility:提升頁面渲染性能的 “智能渲染開關”

在前端開發中&#xff0c;你是否遇到過這樣的問題&#xff1a;頁面包含大量 DOM 元素&#xff08;如長列表、復雜表格&#xff09;時&#xff0c;滾動變得卡頓&#xff0c;交互響應遲緩&#xff1f;這往往是因為瀏覽器需要不斷渲染屏幕外的元素&#xff0c;浪費了大量計算資源。…

Javascript面試題及詳細答案150道之(016-030)

《前后端面試題》專欄集合了前后端各個知識模塊的面試題&#xff0c;包括html&#xff0c;javascript&#xff0c;css&#xff0c;vue&#xff0c;react&#xff0c;java&#xff0c;Openlayers&#xff0c;leaflet&#xff0c;cesium&#xff0c;mapboxGL&#xff0c;threejs&…

仿真電路:(十七下)DC-DC升壓壓電路原理簡單仿真

1.前言 升壓的環境用的沒降壓的多&#xff0c;但是升壓會用在LED的很多電路上&#xff0c;所以理解一下原理 2.DC-DC升壓原理簡單仿真 升壓原理 下面還是對升壓進行簡單的仿真 拓撲結構以及原理和降壓還是很相似的&#xff0c;只是位置不太一樣&#xff0c;過程推導就不推導…

ros2--source

setup腳本類型 install下面會有幾個setup.xxx的shell腳本。 setup.bash setup.ps1 setup.sh setup.zsh 什么區別呢 文件名 Shell 類型 適用場景 setup.bash Bash (Linux/macOS) 標準 Linux/macOS 終端(默認使用) setup.sh 通用 Shell 兼容性更廣,但功能可能受限 setu…

40.MySQL事務

1.事務的作用事務用于保證數據的一致性&#xff0c;它由一組相關的 dml (update delete insert) 語句組成&#xff0c;該組的 dml (update delete insert) 語句要么全部成功&#xff0c;要么全部失敗。如&#xff1a;轉賬就要用事務來處理&#xff0c;用以保證數據的一致性。假…

java導入pdf(攜帶動態表格,圖片,純java不需要模板)

java導出pdf文件一、介紹二、準備三、實現效果四、代碼一、介紹 上一篇文章&#xff08;java使用freemarker操作word&#xff08;攜帶動態表格&#xff0c;圖片&#xff09;&#xff09;https://blog.csdn.net/weixin_45853881/article/details/129298494 緊跟上文&#xff0c…

【dropdown組件填坑指南】鼠標從觸發元素到下拉框中間間隙時,下拉框消失,怎么解決?

開發dropdown組件填坑之hideDelay 引言 在開發下拉菜單&#xff08;dropdown&#xff09;或彈出框&#xff08;popover&#xff09;組件時&#xff0c;一個常見的用戶體驗問題就是鼠標移出觸發區域后&#xff0c;彈出內容立即消失&#xff0c;這會導致用戶無法移動到彈出內容上…

Linux I/O 函數完整清單

Linux I/O 函數完整清單 1. 基礎 I/O 函數 1.1 基本讀寫 #include <unistd.h>ssize_t read(int fd, void *buf, size_t count); ssize_t write(int fd, const void *buf, size_t count);1.2 位置指定讀寫 #include <unistd.h>ssize_t pread(int fd, void *buf, siz…

面經——電子電路技術知識詳解

電子電路技術知識詳解 目錄 德摩根定律周期性矩形波產生方法自激振蕩器原理與設計晶體管溫度效應分析反向飽和電流影響因素放大電路負反饋類型判斷正弦波90相移電路直接耦合放大器的缺點二階有源低通濾波器分析開關電源與線性電源對比 德摩根定律 德摩根定律&#xff08;De …

docker 安裝 gitlab

null文章瀏覽閱讀445次。問題&#xff1a;運行 docker run hello-world 報錯。原因&#xff1a;原鏡像源網絡不穩定。https://blog.csdn.net/sszdzq/article/details/145733419 鏡像獲取 在線下載 docker pull gitlab/gitlab-ce:17.11.1-ce.0 離線獲取 創建運行 sudo docke…

PHP中的日期/時間處理之Carbon組件

日常開發中&#xff0c;我們會經常用到日期和時間的操作&#xff0c;但官方的一般操作比較復雜&#xff0c;需要大量的時間進行格式化問題和大量計算等等。Carbon組件 可以幫助我們在 PHP 開發中處理日期/時間變得更加簡單、更語義化&#xff0c;從而使得我們的代碼更容易閱讀和…

學習嵌入式第十八天

文章目錄1.數據結構1.概念2.衡量代碼質量和效率1.時間復雜度2.空間復雜度3.數據結構分類1.邏輯結構2.存儲結構3.常見的數據結構2.鏈表1.與順序表的區別2.鏈表分類1.單向鏈表1.定義鏈表節點類型2.空鏈表的創建3.鏈表的頭插法4.鏈表的遍歷5.鏈表元素刪除3.makefile習題1.數據結構…

基于SpringBoot+Vue實現校園商鋪系統

作者主頁&#xff1a;編程指南針 作者簡介&#xff1a;Java領域優質創作者、CSDN博客專家 、CSDN內容合伙人、掘金特邀作者、阿里云博客專家、51CTO特邀作者、多年架構師設計經驗、多年校企合作經驗&#xff0c;被多個學校常年聘為校外企業導師&#xff0c;指導學生畢業設計并參…

從資源閑置到彈性高吞吐,JuiceFS 如何構建 70GB/s 吞吐的緩存池?

AI 模型的訓練與推理對存儲系統提出了極為嚴苛的要求&#xff0c;特別是在高吞吐、高并發以及對海量小文件的高效處理方面&#xff0c;已成為三大主要挑戰。盡管基于 Lustre 或 GPFS 的并行文件系統具備出色的性能&#xff0c;但其成本高昂、吞吐能力與容量強耦合&#xff0c;可…

提升JVM性能之CMS垃圾回收器的優化分析與案例剖析

這里寫目錄標題一、CMS基本介紹二、CMS核心優化策略1. 避免并發模式失敗&#xff08;Concurrent Mode Failure&#xff09;2. 減少內存碎片3. 調優并發階段耗時4. 新生代優化配合三、典型案例解析案例1&#xff1a;電商服務頻繁Full GC案例2&#xff1a;金融交易系統碎片導致長…

Token系列 - 再談穩定幣

相關政策 2024年12月&#xff0c;歐洲《加密資產市場監管法案》正式成為法律2025年3月&#xff0c;日本細化了加密資產及穩定幣的監管調整2025年5月&#xff0c;英國發布了關于穩定幣發行、加密資產托管及加密資產公司財務穩健性的監管提案&#xff1b;2025年5月20日&#xff…