Spring-Data-ES-template工具類使用

? ? ? ? ? ? SpringDataElasticsearch 提供了一個工具類 ElasticsearchTemplate,我們使用該類對象也可以對 ES 進行操作

1.操作索引

首先注入操作ES所需要的工具類(ElasticsearchTemplate)。

@Autowiredprivate ElasticsearchTemplate template;

將createIndex改為false

@Document(indexName = "product",createIndex = false)
@Data
@AllArgsConstructor
public class Product {@Id //標記在成員變量上,標記一個字段為主鍵,該字段的值會同步到ES該文檔的id值//標記在成員變量上,標記為文檔中的域,一般有如下屬性-> type域的類型,index是否創建索引,store是否單獨存儲,analyzer分詞器,searchAnalyzer搜索分詞器@Field(type = FieldType.Integer,store = true,index = true)private Integer id;@Field(type = FieldType.Text,store = true,index = true,analyzer = "ik_max_word",searchAnalyzer = "ik_max_word")private String productName;@Field(type = FieldType.Text,store = true,index = true,analyzer = "ik_max_word",searchAnalyzer = "ik_max_word")private String productDesc;
}

1.1新增索引(不推薦)

不推薦原因:生成的索引中mappings為空,并不按照指定

@Testpublic void addIndex(){//獲取索引操作對象IndexOperations indexOperations = template.indexOps(Product.class);//創建索引indexOperations.create();}

1.2刪除索引

@Testpublic void deleteIndex(){//獲取索引操作對象IndexOperations indexOperations = template.indexOps(Product.class);//刪除索引indexOperations.delete();}

2.操作文檔

?2.1新增/修改 文檔??

 //新增/修改 文檔@Testpublic void addDocument(){Product product = new Product(5, "elasticsearch", "elasticsearch是一款非常好的分詞器");template.save(product);}

2.2刪除文檔

@Testpublic void deleteDocument(){template.delete("5",Product.class);}

2.3查詢文檔

//根據id查詢
@Testpublic void findDocument(){Product product = template.get("1", Product.class);System.out.println(product);}

3.查詢文檔

templatesearch方法可以查詢文檔

SearchHits < T > search ( Query query , Class < T > clazz ) :查詢文檔, query 是查詢條件對象, clazz 是結果類型。

3.1簡單查詢

@Testpublic void findDocuments(){//1.構造查詢條件NativeQuery query=new NativeQueryBuilder().withQuery(Queries.matchAllQueryAsQuery()).build();//2.查詢SearchHits<Product> result = template.search(query, Product.class);//3.處理查詢結果for (SearchHit<Product> productSearchHit : result) {System.out.println(productSearchHit.getContent());}}

3.2匹配查詢

@Testpublic void findDocuments(){//1.構造查詢條件NativeQuery query=new NativeQueryBuilder().withQuery(Queries.matchQueryAsQuery("productDesc","手機",null,null)).build();//2.查詢SearchHits<Product> result = template.search(query, Product.class);//3.處理查詢結果for (SearchHit<Product> productSearchHit : result) {System.out.println(productSearchHit.getContent());}}

4.復雜條件查詢

    @Testpublic void findDocuments2(){String productName="三體";String productDesc="小說";//1.構造查詢條件NativeQueryBuilder nativeQueryBuilder = new NativeQueryBuilder();//判斷是否有查詢條件if (productName== null && productDesc== null){//查詢所有nativeQueryBuilder.withQuery(Queries.matchAllQueryAsQuery());}else {//構造bool查詢BoolQuery.Builder boolQuery = QueryBuilders.bool();if (productName!=null){//構造must條件boolQuery.must(Queries.matchQueryAsQuery("productName",productName,null,null));}if (productDesc!=null){boolQuery.must(Queries.matchQueryAsQuery("productDesc",productDesc,null,null));}//構造查詢條件nativeQueryBuilder.withQuery(boolQuery.build()._toQuery());}//構造查詢條件NativeQuery query = nativeQueryBuilder.build();//2.查詢SearchHits<Product> result = template.search(query, Product.class);//3.處理查詢結果for (SearchHit<Product> productSearchHit : result) {System.out.println(productSearchHit.getContent());}}

5.分頁查詢

    @Testpublic void findDocuments3(){//1.構造查詢條件//分頁條件Pageable pageable = PageRequest.of(0, 3, Sort.by(Sort.Direction.DESC, "id"));NativeQuery query=new NativeQueryBuilder().withQuery(Queries.matchAllQueryAsQuery()).withPageable(pageable).build();//2.查詢SearchHits<Product> result = template.search(query, Product.class);//3.處理查詢結果ArrayList content = new ArrayList();for (SearchHit<Product> productSearchHit : result) {content.add(productSearchHit.getContent());}/***封裝page對象* 參數1:具體數據 參數2:分頁條件對象 參數3:總條數*/Page<PageImpl> page = new PageImpl(content, pageable, result.getTotalHits());System.out.println(page.getTotalElements());System.out.println(page.getTotalPages());System.out.println(page.getContent());}

6.結果排序

    @Testpublic void findDocumentSort(){//1.構造查詢條件NativeQuery query=new NativeQueryBuilder().withQuery(Queries.matchAllQueryAsQuery())//Sort.Direction.DESC 降序 Sort.Direction.ASC 升序.withSort(Sort.by(Sort.Direction.DESC,"id")).build();//2.查詢SearchHits<Product> result = template.search(query, Product.class);//3.處理查詢結果for (SearchHit<Product> productSearchHit : result) {System.out.println(productSearchHit.getContent());}}

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

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

相關文章

springboot在線教育平臺-計算機畢業設計源碼68562

摘要 在數字化時代&#xff0c;隨著信息技術的飛速發展&#xff0c;在線教育已成為教育領域的重要趨勢。為了滿足廣大學習者對于靈活、高效學習方式的需求&#xff0c;基于Spring Boot的在線教育平臺應運而生。Spring Boot以其快速開發、簡便部署以及良好的可擴展性&#xff0c…

N6 word2vec文本分類

&#x1f368; 本文為&#x1f517;365天深度學習訓練營 中的學習記錄博客&#x1f356; 原作者&#xff1a;K同學啊# 前言 前言 上周學習了訓練word2vec模型&#xff0c;這周進行相關實戰 1. 導入所需庫和設備配置 import torch import torch.nn as nn import torchvision …

【啟明智顯分享】樂鑫HMI方案4.3寸觸摸串口屏:水質檢測儀應用解決方案

水是萬物的源泉&#xff0c;了解水的酸堿度對于保障我們的健康、生產和生活環境至關重要。水質檢測儀應運而生&#xff0c;它讓我們能夠洞察水的酸堿奧秘。 水是萬物的源泉&#xff0c;了解水的酸堿度對于保障我們的健康、生產和生活環境至關重要。水質檢測儀應運而生&#xff…

springboot藥房庫存管理系統-計算機畢業設計源碼50588

目 錄 摘要 1 緒論 1.1 研究背景與意義 1.2開發現狀 1.3論文結構與章節安排 2 藥房庫存管理系統系統分析 2.1 可行性分析 2.1.1 技術可行性分析 2.1.2 經濟可行性分析 2.1.3 法律可行性分析 2.2 系統功能分析 2.2.1 功能性分析 2.2.2 非功能性分析 2.3 系統用例分…

MES ERP PM 質量管理 人機料法環測 質量控制六要素

七要素 在質量管理理論中&#xff0c;特別是在制造業中&#xff0c;分析生產過程中影響產品質量的七個關鍵因素 人機料法環測七要素是指在質量管理理論中&#xff0c;特別是在制造業中&#xff0c;分析生產過程中影響產品質量的七個關鍵因素。這七個要素包括&#xff1a; …

谷歌報告顯示:2023 年 50% 的0day漏洞利用背后都是間諜軟件供應商

人不走空 &#x1f308;個人主頁&#xff1a;人不走空 &#x1f496;系列專欄&#xff1a;算法專題 ?詩詞歌賦&#xff1a;斯是陋室&#xff0c;惟吾德馨 導 讀 谷歌威脅分析小組 (TAG) 和谷歌子公司 Mandiant 表示&#xff0c;他們觀察到 2023 年攻擊中利用的0day漏洞…

print(f‘ \‘)python中加了\之后有很大空行,如何去掉

在 Python 中&#xff0c;反斜杠 \ 通常用于表示字符串的續行符&#xff0c;允許你將長字符串拆分成多行。然而&#xff0c;如果你在 print 函數中使用反斜杠并在其后面加上空格或換行符&#xff0c;可能會導致意外的空行或空格。 在 print 函數中避免這些空行或空格&#xff…

垃圾百度網盤到底誰在使用

通過鏈接分享 通過鏈接分享到vx給好友查看好友在微信聊天框內打開百度網盤鏈接直接查看即使點擊查看大圖查看的圖片依舊很模糊&#xff0c;不是原圖點擊右下角去app查看在百度網盤內部查看時&#xff0c;顯示的和下載的才是原圖真的是用戶體驗極差&#xff0c;真的垃圾… 通過…

數據結構與算法的聯系(筆記)

文章目錄 1. 什么是數據結構定義舉例CRUD難道不是都一樣嗎&#xff1f; 總結 2. 什么是算法3. 數據結構與算法的聯系舉例 4. 推薦 1. 什么是數據結構 定義 數據結構(data structure)是計算機中存儲、組織數據的方式。 關鍵詞&#xff1a;① 數據 ② 存儲 ③ 組織 舉例 以手機通…

基于 Nginx + Spring Boot + Vue + JPA 的網站安全防護指南

引言 在現代互聯網時代&#xff0c;確保網站的安全性非常重要。尤其是基于前后端分離架構&#xff0c;更需要特別注意安全防護。接下來&#xff0c;帶你了解幾種常見的安全攻擊及其應對措施。 常見的安全攻擊及應對措施 1. 跨站腳本攻擊 (XSS) 攻擊描述&#xff1a; 跨站腳…

css簡單易懂的加載動畫,看不會算我輸好吧

效果展示 步驟 第一階段 先準備結構&#xff0c;并且放置12個div&#xff0c;每一個div旋轉30*n度&#xff0c; 做一個圓圈 dom <div class"modal"><div class"loading"><div class"item1"></div><div class&quo…

Spark 分布式彈性計算集(RDD)相關概念介紹

目錄 一、概述 二、RDD的核心概念 2.1 Partition 2.2 Partitioner 2.3 RDD的依賴關系 2.4 Stage 2.5 PreferredLocation 2.6 CheckPoint 三、RDD的持久化 3.1 概述 3.2 概念 3.3 RDD持久化級別 3.3.1 MEMORY_ONLY 3.3.2 MEMORY_AND_DISK 3.3.3 MEMORY_ONLY_SER …

基于語義的法律問答系統

第一步&#xff0c;準備數據集 第二步&#xff0c;構建索引數據集&#xff0c;問答對數據集&#xff0c;訓練數據集&#xff0c;召回評估數據集 第三步&#xff0c;構建dataloader,選擇優化器訓練模型&#xff0c;之后召回評估 第四步&#xff0c;模型動轉靜&#xff0c;之后…

Synchronized底層工作原理

Synchronized 是Java中最常用的內置鎖機制&#xff0c;用于確保多線程環境下的同步。其底層原理涉及到JVM&#xff08;Java虛擬機&#xff09;和字節碼指令。以下是 synchronized 的底層工作原理的詳細介紹&#xff1a; 1. 基本概念 對象頭&#xff08;Object Header&#xf…

【UE5.1 角色練習】15-槍械射擊——子彈發射物

目錄 效果 步驟 一、創建并發射子彈 二、優化子彈 效果 步驟 一、創建并發射子彈 1. 在前面的文章中&#xff08;【UE5.1 角色練習】06-角色發射火球-part1&#xff09;我們創建了藍圖“BP_Skill_FireBall” 這里我們復制一份命名為“BP_Ammo_5mm”&#xff0c;用于表示…

科技的成就(六十一)

567、數據虛擬化 用來描述所有數據管理方法的涵蓋性術語&#xff0c;這些方法允許應用程序檢索并管理數據&#xff0c;且不需要數據相關的技術細節&#xff0c;例如它格式化的方式或物理位置所在。數據整合的過程&#xff0c;以此獲得更多的數據信息&#xff0c;這個過程通常會…

SLAM中的塊矩陣與schur補

文章目錄 SLAM中的塊矩陣與schur補Schur補的另一種解釋對角塊矩陣的逆為各個塊的逆的組合 SLAM中的塊矩陣與schur補 Schur補的另一種解釋 Schur從概率角度來解釋是比較常見的一種推導&#xff0c;可以參考博客https://blog.csdn.net/weixin_41469272/article/details/1219944…

若依搭建 帝可得 售貨機 筆記

一、搭建項目 1.后端gitee鏈接&#xff1a; 啟動項目時記得修改mysql和redis的相關信息&#xff1b;創建項目相關數據庫&#xff0c;并導入初始化的SQL腳本 dkd-parent: 帝可得后臺管理系統 (gitee.com) 2.前端gitee鏈接&#xff1a; 啟動項目時記得安裝依賴&#xff1a;np…

Github Action 自動部署更新靜態網頁服務

本文首發于 Anyeの小站&#xff0c;點擊跳轉 獲得更優質的閱讀體驗 前言 貼一段胡話 在用過 應用&#xff1a;靜態網頁服務 之后&#xff0c;事實證明&#xff1a; 總而言之&#xff0c;自動化是一個很令人著迷的東西&#xff0c;擺脫重復繁瑣的工作&#xff0c;解放了雙手的…

JCR一區 | Matlab實現GAF-PCNN-MATT、GASF-CNN、GADF-CNN的多特征輸入數據分類預測/故障診斷

JJCR一區 | Matlab實現GAF-PCNN-MATT、GASF-CNN、GADF-CNN的多特征輸入數據分類預測/故障診斷 目錄 JJCR一區 | Matlab實現GAF-PCNN-MATT、GASF-CNN、GADF-CNN的多特征輸入數據分類預測/故障診斷分類效果格拉姆矩陣圖GAF-PCNN-MATTGASF-CNNGADF-CNN 基本介紹程序設計參考資料 分…