袁庭新老師ES系列17節(jié)|Spring Data Elasticsearch基礎(chǔ)
前言
為了簡化對Elasticsearch的操作Spring Data提供了Spring Data Elasticsearch。Spring Data Elasticsearch是Spring Data技術(shù)對Elasticsearch原生API封裝之后的產(chǎn)物,它通過對原生API的封裝,使得程序員可以簡單的對Elasticsearch進(jìn)行各種操作。接下來就跟著袁老師一起來學(xué)習(xí)Spring Data Elasticsearch相關(guān)的知識。
一.?Spring Data Elasticsearch概述
Spring Data Elasticsearch官方文檔地址:
1.簡介
Spring Data for Elasticsearch是Spring Data項目的一部分,該項目旨在為新的數(shù)據(jù)存儲提供一個熟悉且一致的基于Spring的編程模型,同時保留特定于存儲的特性和功能。
Spring Data Elasticsearch項目提供了與Elasticsearch搜索引擎的集成。Spring Data Elasticsearch的關(guān)鍵功能領(lǐng)域是一個以POJO為中心的模型,用于與Elasticsearch文檔交互,并輕松編寫一個Repository風(fēng)格的數(shù)據(jù)訪問層。
2.特征
Spring Data for Elasticsearch的特性主要見下:
Spring配置支持使用基于Java的@Configuration類或ES客戶端實例的XML命名空間。
ElasticsearchTemplate幫助類,它可以提高執(zhí)行常見ES操作的效率。包括文檔和POJO之間的集成對象映射。
與Spring的轉(zhuǎn)換服務(wù)集成的功能豐富的對象映射。
基于注釋的映射元數(shù)據(jù),但可擴展以支持其他元數(shù)據(jù)格式。
自動實現(xiàn)Repository接口,包括對自定義查找器方法的支持。
對存儲庫的CDI支持。
二.?Spring Data Elasticsearch配置
1.基本配置
1.我們在【es-client】項目的pom.xml文件中,引入Spring Data Elasticsearch的啟動器。
2.在resources目錄下的application.yml文件中配置Elasticsearch的host和port信息。
需要注意的是,Spring Data Elasticsearch底層使用的不是Elasticsearch提供的RestHighLevelClient,而是TransportClient,并不采用HTTP協(xié)議通信,而是訪問Elasticsearch對外開放的TCP端口。我們在之前集群配置中,設(shè)置的端口分別是:9301、9302、9303。
另外,Spring Boot已經(jīng)幫我們配置好了各種SDE配置,并且注冊了一個ElasticsearchTemplate供我們使用。接下來一起來試試吧。
3.在test測試文件夾下的com.yx.es包下創(chuàng)建一個SpringDataESTests測試類。通過@Autowired注解對ElasticsearchTemplate進(jìn)行注入,測試對象是否可以獲取到。
4.運行check()方法,輸出結(jié)果見下:
2.異常解析
如果運行check()方法報錯,可能是以下問題所導(dǎo)致。
1.在pom.xml配置文件中,將Spring Boot的版本設(shè)置為2.1.6.RELEASE,進(jìn)行降級處理。原因是安裝的Elasticsearch是6.2.4版本,如果Spring Boot的版本過高可能不兼容。
2.檢查ElasticsearchTemplate類的導(dǎo)包是否是org.springframework.data.elasticsearch.core.ElasticsearchTemplate。高版本的SDE可能包結(jié)構(gòu)有區(qū)別。
3.如果輸出結(jié)果是"null",原因是低版本的Spring Boot測試類需要添加@RunWith(SpringRunner.class)注解進(jìn)行修飾。
三.?索引庫操作
1.創(chuàng)建索引庫
創(chuàng)建索引庫需要使用到的注解:

實際上,與我們自定義工具類類似,SDE也是通過實體類上的注解來配置索引庫信息的。
1.我們在Product實體類上添加下面的一些注解。
2.在SpringDataESTests類中定義創(chuàng)建索引的createIndex()方法。
2.創(chuàng)建映射
剛才的注解已經(jīng)把映射關(guān)系也配置上了,所以創(chuàng)建映射只需要這樣:
四. 結(jié)語
跟著袁老師回顧一下這一章節(jié)我們學(xué)習(xí)的主要內(nèi)容,首先我們對Spring Data Elasticsearch進(jìn)行了簡單介紹并概述了其特征;然后學(xué)習(xí)了Spring Data Elasticsearch的基本配置;最后介紹了通過Spring Data Elasticsearch如何操作Elasticsearch。關(guān)于Spring Data for Elasticsearch的基本使用就給大家介紹到這里。