本章節(jié)介紹Elasticsearch的Java Client的原理、版本兼容性以及使用示例,幫助您快速地使用Java客戶端與Elasticsearch集群進(jìn)行交互,完成檢索、分析等相關(guān)業(yè)務(wù)。

Transport Client遷移至REST Client

Transport Client隨著Elasticsearch的第一個(gè)版本誕生,是一個(gè)特別的客戶端。特別之處在于,它使用TCP協(xié)議與Elasticsearch通信,這也造成了當(dāng)客戶端與不同版本的Elasticsearch通信時(shí),會(huì)存在兼容性問題。詳情請參見Motivations around a new Java client

Elasticsearch官網(wǎng)于2016年發(fā)布Low Level REST客戶端,該客戶端基于Apache HTTP客戶端,允許通過HTTP協(xié)議與任何版本的Elasticsearch集群通信。在Low Level REST客戶端的基礎(chǔ)上,Elasticsearch發(fā)布了High Level REST Client。

Elasticsearch 7.0中已經(jīng)棄用Transport Client,在8.0中完全移除它。因此在實(shí)際開發(fā)中建議您使用Java REST Client。REST Client通過HTTP請求,幫助您處理請求和返回的序列化問題,為您的業(yè)務(wù)開發(fā)帶來便捷。
注意
  • 如果您需要使用Transport Client通過9300端口訪問阿里云Elasticsearch實(shí)例,請購買5.5或5.6版本的實(shí)例(6.x及以上版本不支持)。
  • 使用Transport Client 5.5或5.6版本與Elasticsearch建立連接時(shí)會(huì)提示NoNodeAvailableException的錯(cuò)誤。推薦使用Transport Client 5.3.3或Java Low Level REST Client來訪問Elasticsearch集群,以保障版本的兼容性。如果使用Transport Client,需要在代碼中將client.transport.sniff設(shè)置為false,詳情請參見Transport Client(5.x)

Java REST客戶端

Java REST客戶端有兩種類型:
  • Java Low Level REST Client:Elasticsearch Client低級(jí)別客戶端。它允許通過HTTP請求與Elasticsearch集群進(jìn)行通信。API本身不負(fù)責(zé)數(shù)據(jù)的編碼解碼,由用戶去編碼解碼。它與所有的Elasticsearch版本兼容。
  • Java High Level REST Client:Elasticsearch Client官方高級(jí)客戶端。基于低級(jí)客戶端,主要目標(biāo)是為了暴露各API特定的方法。Java High Level REST Client依賴于Elasticsearch核心項(xiàng)目,將Request對象作為參數(shù),返回一個(gè)Response對象。所有API都可以同步或異步調(diào)用。
    • 同步調(diào)用方法立即返回一個(gè)Response對象。
    • 而異步調(diào)用方法(方法名以async結(jié)尾)依賴于監(jiān)聽,當(dāng)有請求返回或是錯(cuò)誤返回時(shí),該監(jiān)聽會(huì)通知到對應(yīng)的方法繼續(xù)執(zhí)行。
本章節(jié)為您講解Java Client的用法(建議優(yōu)先使用REST Client),包括:

相關(guān)文檔

Elasticsearch使用指南(云棲社區(qū))