本章節介紹Elasticsearch的Java Client的原理、版本相容性以及使用樣本,協助您快速地使用Java用戶端與Elasticsearch叢集進行互動,完成檢索、分析等相關業務。
Transport Client遷移至REST Client
Transport Client隨著Elasticsearch的第一個版本誕生,是一個特別的用戶端。特別之處在於,它使用TCP協議與Elasticsearch通訊,這也造成了當用戶端與不同版本的Elasticsearch通訊時,會存在相容性問題。詳情請參見Motivations around a new Java client。
Elasticsearch官網於2016年發布Low Level REST用戶端,該用戶端基於Apache HTTP用戶端,允許通過HTTP協議與任何版本的Elasticsearch叢集通訊。在Low Level REST用戶端的基礎上,Elasticsearch發布了High Level REST Client。
Elasticsearch 7.0中已經棄用Transport Client,在8.0中完全移除它。因此在實際開發中建議您使用Java REST Client。REST Client通過HTTP請求,協助您處理請求和返回的序列化問題,為您的業務開發帶來便捷。 通過9300連接埠訪問Elasticsearch執行個體,請購買5.5或5.6版本的執行個體(6.x及以上版本不支援)。使用Transport Client 5.5或5.6版本與Elasticsearch建立串連時會提示NoNodeAvailableException的錯誤。推薦使用Transport Client 5.3.3或Java Low Level REST Client來訪問Elasticsearch叢集,以保障版本的相容性。如果使用Transport Client,需要在代碼中將
重要
- 如果您需要使用Transport Client
client.transport.sniff
設定為false,詳情請參見Transport Client(5.x)。Java REST用戶端
Java REST用戶端有兩種類型:
- Java Low Level REST Client:Elasticsearch Client低層級用戶端。它允許通過HTTP請求與Elasticsearch叢集進行通訊。API本身不負責資料的編碼解碼,由使用者去編碼解碼。它與所有的Elasticsearch版本相容。
- Java High Level REST Client:Elasticsearch Client官方進階用戶端。基於低級用戶端,主要目標是為了暴露各API特定的方法。Java High Level REST Client依賴於Elasticsearch核心專案,將Request對象作為參數,返回一個Response對象。所有API都可以同步或非同步呼叫。
- 同步調用方法立即返回一個Response對象。
- 而非同步呼叫方法(方法名以async結尾)依賴於監聽,當有請求返回或是錯誤返回時,該監聽會通知到對應的方法繼續執行。
本章節為您講解Java Client的用法(建議優先使用REST Client),包括: