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

歡迎光臨散文網(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高級的評論 (共 條)

分享到微博請遵守國家法律
丰原市| 门源| 临西县| 峨山| 运城市| 房产| 舒兰市| 广饶县| 桓仁| 息烽县| 湖北省| 龙岩市| 黄梅县| 河南省| 无锡市| 嘉黎县| 平度市| 安新县| 冷水江市| 东丽区| 呼伦贝尔市| 紫阳县| 余干县| 宝兴县| 繁昌县| 揭西县| 三原县| 水富县| 巩留县| 印江| 临江市| 永川市| 姚安县| 温宿县| 新河县| 仙游县| 即墨市| 正定县| 通化市| 陆川县| 马鞍山市|