最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

袁庭新老師ES系列18節(jié)|Spring Data Elasticsearch高級

2023-09-22 12:59 作者:袁庭新  | 我要投稿

前言

這一章節(jié)袁老師將帶領(lǐng)同學(xué)們來學(xué)習(xí)Spring Data Elasticsearch高級操作相關(guān)的內(nèi)容。我們繼續(xù)來探索SDE是如何將原始操作Elasticsearch的客戶端API進(jìn)行封裝的,以及通過Spring Data Elasticsearch如何來操作ES。準(zhǔn)備好了嗎?我們繼續(xù)來探索ES的內(nèi)容。

一. 索引數(shù)據(jù)CRUD操作

SDE的索引數(shù)據(jù)CRUD操作并沒有封裝在ElasticsearchTemplate類中,封裝在ElasticsearchRepository這個(gè)接口中。

首先在com.yx.respository包下,需要自定義一個(gè)ProductRepository的接口,該接口需要繼承ElasticsearchRespository<Product>接口。

1.創(chuàng)建索引數(shù)據(jù)

創(chuàng)建索引數(shù)據(jù)時(shí),有單個(gè)創(chuàng)建和批量創(chuàng)建之分。

1.先來看單個(gè)創(chuàng)建。在SpringDataESTests類中定義addDocument()方法。

2.再來看批量創(chuàng)建。在SpringDataESTests類中定義addDocuments()方法。

2.查詢索引數(shù)據(jù)

2.1.根據(jù)id查詢數(shù)據(jù)

ElasticsearchRepository接口中封裝了根據(jù)id查詢的findById(ID var1)方法。

1.在SpringDataESTests類中定義findById()方法。

2.運(yùn)行findById()方法,輸出結(jié)果見下:

2.2.查詢所有數(shù)據(jù)

ElasticsearchRepository接口中封裝了查詢所有數(shù)據(jù)的findAll()方法。

1.在SpringDataESTests類中定義findAll()方法。

2.運(yùn)行findAll()方法,輸出結(jié)果見下:

3.自定義方法查詢

3.1.存儲庫查詢關(guān)鍵字

ElasticsearchRepository提供的查詢方法有限,但是它卻提供了非常強(qiáng)大的自定義查詢功能。只要遵循Spring Data Elasticsearch提供的語法,我們可以任意定義方法聲明。

3.2.自定義方法查詢案例

1.在ProductRepository接口中定義根據(jù)商品的價(jià)格區(qū)間查詢商品數(shù)據(jù)的findByPriceBetween()方法。

2.無需寫實(shí)現(xiàn),SDE會自動幫我們實(shí)現(xiàn)該方法,我們只需要用即可。在SpringDataESTests類中定義findByPriceBetween()方法。

3.運(yùn)行findByPriceBetween()方法,輸出結(jié)果見下:

二. 原生查詢

1.原生查詢介紹

如果覺得上述接口依然不符合你的業(yè)務(wù)需求的話,SDE也支持原生查詢的操作。這個(gè)時(shí)候還是使用ElasticsearchTemplate,而查詢條件的構(gòu)建是通過一個(gè)名為NativeSearchQueryBuilder的類來完成的,不過這個(gè)類的底層還是使用的原生API中的QueryBuilders、AggregationBuilders、HighlightBuilders等工具來實(shí)現(xiàn)的。

2.原生查詢案例

需求描述:

  • 查詢title中包含“手機(jī)”的商品;

  • 且以價(jià)格升序進(jìn)行排序;

  • 進(jìn)行分頁查詢:每頁展示2條數(shù)據(jù),查詢第1頁;

  • 最后對查詢結(jié)果進(jìn)行聚合分析:獲取品牌及個(gè)數(shù)。

1.在SpringDataESTests類中定義nativeQuery()方法。

注意:上述查詢不支持高亮結(jié)果。

2.運(yùn)行nativeQuery()方法,輸出結(jié)果見下:

三. 高亮顯示

1.高亮顯示需求

需求描述:查詢title中包含“小米手機(jī)”的商品,并將title中對應(yīng)的分詞通過<span style='color:red'></span>標(biāo)簽進(jìn)行高亮修飾。

2.高亮顯示實(shí)現(xiàn)

1.在com.yx.mapper包下自定義搜索結(jié)果映射ProductSearchResultMapper類。

2.高亮實(shí)現(xiàn)。重構(gòu)nativeQuery()方法,使用自定義查詢結(jié)果映射,來實(shí)現(xiàn)高亮顯示。

3.運(yùn)行nativeQuery()測試方法后,輸出結(jié)果見下。

四. 結(jié)語

Spring Data Elasticsearch基于spring data API大大簡化了Elasticsearch的操作,從而簡化開發(fā)人員的代碼,提高開發(fā)效率。然后我們給大家介紹了使用Spring Data對Elasticsearch進(jìn)行了增、刪、改、查操作。

同學(xué)們,關(guān)于Elasticsearch的所有內(nèi)容袁老師就給大家介紹到這里。還有很多前沿技術(shù)等著大家去探索,“路漫漫其修遠(yuǎn)昔,吾將上下而求索”。最后,祝愿各位小伙伴未來學(xué)業(yè)有成,一切如意!

袁庭新老師ES系列18節(jié)|Spring Data Elasticsearch高級的評論 (共 條)

分享到微博請遵守國家法律
富源县| 徐闻县| 延津县| 时尚| 巴中市| 宜宾县| 凉城县| 西青区| 扬州市| 兖州市| 新兴县| 铅山县| 新蔡县| 石河子市| 卢氏县| 黄浦区| 丹棱县| 金华市| 秦安县| 龙山县| 陆河县| 嘉禾县| 承德市| 濉溪县| 肥西县| 梁河县| 海伦市| 迁西县| 苍南县| 郁南县| 汉源县| 离岛区| 西藏| 济宁市| 嘉善县| 康保县| 甘德县| 建宁县| 德州市| 蒙阴县| 余干县|