袁庭新老師ES系列15節(jié)|Elasticsearch客戶端基礎(chǔ)操作
前言
上一章節(jié)我們介紹了搭建Elasticsearch集群相關(guān)的知識。那么又該如何來操作Elasticsearch集群呢?在ES官網(wǎng)中提供了各種語言的客戶端,我們在項目開發(fā)過程中有多種Elasticsearch版本和連接客戶端可以選擇,那么他們有什么區(qū)別?這一章節(jié)袁老師帶領(lǐng)大家來學(xué)習(xí)Elasticsearch客戶端相關(guān)的內(nèi)容。
一. ES客戶端介紹
Elasticsearch客戶端詳解介紹可參考Elasticsearch官網(wǎng)介紹。
在Elasticsearch官網(wǎng)中提供了各種語言的客戶端:

注意點擊進(jìn)入后,選擇版本到6.2.4版本 ,因為我們之前按照的都是6.2.4版本講解的。進(jìn)入后可以通過官方文檔了解和學(xué)習(xí)Java客戶端相關(guān)的知識。
二. 搭建工程環(huán)境
1.創(chuàng)建一個Spring Initalizr類型的項目,項目名稱設(shè)置為【es-client】。

2.創(chuàng)建項目時,勾選Lombok、Spring Boot DevTools和Spring Web依賴。

注意:這里我們直接導(dǎo)入了SpringBoot的啟動器,方便后續(xù)講解。
3.將resource目錄下自動生成的application.properties文件修改成application.yml。
4.在項目的pom.xml文件中手動引入Elasticsearch的High-level-Rest-Client等相關(guān)的依賴。
三. 索引庫及映射
創(chuàng)建索引庫的同時,我們也會創(chuàng)建type及其映射關(guān)系,但是這些操作不建議使用Java客戶端完成,原因如下:
索引庫和映射往往是初始化時完成,不需要頻繁操作,不如提前配置好。
官方提供的創(chuàng)建索引庫及映射API非常繁瑣,需要通過字符串拼接JSON結(jié)構(gòu)。
因此,這些操作建議還是使用我們之前學(xué)習(xí)的Rest風(fēng)格API去實現(xiàn)。
在項目的com.yx.pojo包下創(chuàng)建Product商品類,以這樣一個商品數(shù)據(jù)為例來創(chuàng)建索引庫。
分析一下數(shù)據(jù)結(jié)構(gòu):

使用Kibana控制臺向集群中創(chuàng)建yx索引庫并編寫映射配置(如果之前創(chuàng)建過yx索引庫則先刪除)。
四. 索引數(shù)據(jù)操作
有了索引庫之后,我們接下來看看如何對索引庫中的數(shù)據(jù)進(jìn)行增刪改查操作。操作MySQL數(shù)據(jù)庫:
????1.獲取數(shù)據(jù)庫連接。
????2.完成數(shù)據(jù)的增刪改查操作。
????3.釋放資源。
1.初始化客戶端
對索引庫做任何操作,都需要通過RestHighLevelClient客戶端來完成。
1.在項目的test測試文件夾下創(chuàng)建com.yx.es包,并在該包下創(chuàng)建一個ElasticsearchTests測試類。
2.然后在ElasticsearchTests類中編寫RestHighLevelClient客戶端的初始化方法init()和關(guān)閉方法close()。
2.新增文檔
新增文檔的實現(xiàn)是,先將數(shù)據(jù)封裝到POJO對象中,然后通過restHighLevelClient對象來向索引庫中新增數(shù)據(jù)。
2.1.新增文檔實現(xiàn)
1.在ElasticsearchTests類中編寫新增文檔的insert()方法。
2.運行insert()方法,輸出結(jié)果見下:
3.運行insert()方法可能會報錯,具體解決方案見下。
2.2.新增文檔異常
1.如果導(dǎo)入Elasticsearch依賴時不指定其版本,可能導(dǎo)致找不到XContentType類。解決的方案就是在pom.xml文件中手動添加Elasticsearch對應(yīng)版本的依賴,比如手動指定Elasticsearch的版本為6.4.3。如果沒有這個問題,則忽略此步驟。
2.如果運行insert()方法提示java.lang.NullPointerException空指針異常,則可能的原因是@Test注解的包導(dǎo)入錯誤,注意導(dǎo)入的包是org.junit.Test而非org.junit.jupiter.api.Test。
3.查看文檔
根據(jù)Rest風(fēng)格,查看文檔是根據(jù)文檔id進(jìn)行GET查詢操作,難點是對結(jié)果的解析。
1.在ElasticsearchTests類中編寫查看文檔的select()方法。
2.運行select()方法,輸出結(jié)果見下:
4.修改文檔
新增文檔時,如果傳遞的id是已經(jīng)存在的,則會完成修改文檔操作,如果id不存在,則是新增文檔操作。
1.在ElasticsearchTests類中編寫修改文檔的update()方法。
2.運行update()方法,輸出結(jié)果見下:
5.刪除文檔
根據(jù)id刪除文檔。
1.在ElasticsearchTests類中編寫刪除文檔的delete()方法。
2.運行delete()方法,輸出結(jié)果見下:
五. 結(jié)語
Elasticsearch客戶端基礎(chǔ)部分的內(nèi)容袁老師就給大家介紹完了?;仡櫹逻@一章節(jié)我們學(xué)習(xí)的主要內(nèi)容,介紹了ES客戶端項目工程搭建、索引庫及映射、索引數(shù)據(jù)操作,主要重點介紹了索引數(shù)據(jù)的增刪改查操縱。關(guān)于ES客戶端基礎(chǔ)部分的內(nèi)容就介紹到這里,下一章節(jié)袁老師帶領(lǐng)大家學(xué)習(xí)Elasticsearch客戶端高級操作部分的內(nèi)容。