国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

干貨 | Elasticsearch Java 客戶端演進(jìn)歷史和選型指南

這篇具有很好參考價值的文章主要介紹了干貨 | Elasticsearch Java 客戶端演進(jìn)歷史和選型指南。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報違法"按鈕提交疑問。

1、Elasticsearch java 客戶端為什么要選型?

Elasticsearch 官方提供了很多版本的 Java 客戶端,包含但不限于:

  • Transport 客戶端

  • Java REST 客戶端

  • Low Level REST 客戶端

  • High Level REST 客戶端

  • Java API 客戶端

非官方的 Java 客戶端,包含但不限于:

  • Jest 客戶端

  • BBoss 客戶端

  • Spring Data Elasticsearch 客戶端 ......

寫出來的就接近十款客戶端!

Elasticsearch ?java 客戶端各個版本的發(fā)展演進(jìn)歷史、選擇哪個、如何選擇是本篇文章要解決的問題。

2、Elasticsearch 官方 Java 客戶端演進(jìn)史

干貨 | Elasticsearch Java 客戶端演進(jìn)歷史和選型指南

2.1 Elasticsearch Transport 客戶端

Elasticsearch Transport 客戶端生命周期:Elasticsearch 0.9 版本(2010年7月27日)生,Elasticsearch 7.0.0版本(2019年04月10日)棄用,Elasticsearch 8.0 版本(2022年02月11日)徹底移除(removed)。

Transport 客戶端使用 Elasticsearch 傳輸協(xié)議(transport protocol of Elasticsearch)和 Elasticsearch 通信。

Elasticsearch 傳輸協(xié)議也就是大家熟知的 9300 端口通信的那個協(xié)議,該協(xié)議負(fù)責(zé)節(jié)點(diǎn)之間互相通信的。如果客戶端的版本與集群版本不一致可能出現(xiàn)兼容性問題。

本文介紹的所有客戶端中,僅 Transport 客戶端使用的是 Elasticsearch 傳輸協(xié)議,其他客戶端都是 Http 協(xié)議。

更加通俗一點(diǎn)說:僅有 Transport 客戶端使用 9300 端口(默認(rèn)),其他都是 9200 端口(默認(rèn))。

Transport 客戶端缺點(diǎn):

  • 和JVM、集群版本緊密耦合。

  • 安全性差。

https://www.elastic.co/guide/en/elasticsearch/client/java-api/0.90/java-api.html

https://www.elastic.co/cn/blog/the-elasticsearch-java-high-level-rest-client-is-out

2.2 Elasticsearch Java REST 客戶端

Java REST Client?發(fā)布版本:5.0 版本(2016年10月26日)。

官方對 Java REST Client 的解讀為:Elasticsearch 的官方“低級“客戶端。允許通過 http 協(xié)議與 Elasticsearch 集群通信。與所有 Elasticsearch 版本兼容。

官方醒目的標(biāo)記了“deprecated”已棄用。

干貨 | Elasticsearch Java 客戶端演進(jìn)歷史和選型指南

Transport 客戶端,Java REST 客戶端特點(diǎn)如下:

  • 耦合性低;

  • 具有更少的依賴項(xiàng);

  • 應(yīng)用程序更加輕量級。

在 Elasticsearch 5.6 版本(2017年9月12日)的時候,REST 客戶端衍生為兩種:

  • Java Low Level REST 客戶端

  • Java High Level REST 客戶端

https://www.elastic.co/guide/en/elasticsearch/client/java-rest/5.0/index.html

2.2.1 Java Low Level REST 客戶端

Low Level Rest 5.6 版本(2017年9月11日)單獨(dú)分割出來,之前統(tǒng)一叫:Java REST 客戶端。

Elasticsearch 官方“低級”客戶端,官方強(qiáng)調(diào)的一個特點(diǎn):它與所有 Elasticsearch 版本兼容。

注意:下文提到的 High Level REST 客戶端已被廢棄,但是:Low Level REST 客戶端到 8.X 版本依然健在。

https://stackoverflow.com/questions/62340904/elasticsearch-rest-high-level-client-vs-elasticsearch-rest-client

2.2.2 ?Java High Level REST 客戶端

High Level REST 客戶端 5.6.0 版本(2017年9月11日)推出,已于 7.15.0 版本(2021年09月22日)廢棄。

Elasticsearch 官方“高級“客戶端 基于 Low Level REST 客戶端,并擴(kuò)展了 Low Level REST 客戶端 的類和接口。

Java High Level REST 客戶端較 Low Level REST 客戶端的優(yōu)勢如下:

  • 優(yōu)勢1:代碼的可維護(hù)性和可讀性強(qiáng)。

舉個例子:發(fā)送請求的代碼,看如下兩種客戶端不同寫法。

Low Level REST 客戶端寫法如下:

Request?request?=?new?Request("GET",?"/posts/_search");

High Level Rest 客戶端寫法如下:

SearchRequest?searchRequest?=?new?SearchRequest("posts");

可以看出,Low Level REST 方式相對“原始”、“笨拙”。

使用 High Level Rest 客戶端上工作就像在 Elasticsearch 的 API 層(通過 HTTP 包間接工作),而Low Level REST 客戶端純粹是在 HTTP 上工作,什么都得自己構(gòu)造。

  • 優(yōu)勢2:更加便捷。

幫助開發(fā)人員像使用 Kibana 一樣關(guān)聯(lián) ES API 使用。

  • 優(yōu)勢3:XPack 高階功能 High Level 自動包含,無需使用 Low Level 自己重寫。

舉個通俗的例子,直接看圖。

干貨 | Elasticsearch Java 客戶端演進(jìn)歷史和選型指南

VS

干貨 | Elasticsearch Java 客戶端演進(jìn)歷史和選型指南

兩個圖一對比就更明顯了,Low Level REST 客戶端 什么都得自己來,High Level REST 客戶端都封裝好了,我們吃“現(xiàn)成”的。

https://www.elastic.co/guide/en/elasticsearch/client/java-rest/5.6/java-rest-high.html

2.3 Elasticsearch Java API Client

7.16 版本(2021年12月8日)推出 Elasticsearch Java API Client。

值得注意的是:7.17 版本的 High Level REST 客戶端可以與 8.X 版本以兼容模式運(yùn)行。

其實(shí)大家可能和我一樣都有疑問:High Level 不香嗎?為啥還要換?

其實(shí)官方在“ElasticCC: The new Elasticsearch Java Client: getting started and behind the scenes”給出了詳盡的解讀。

干貨 | Elasticsearch Java 客戶端演進(jìn)歷史和選型指南

概括如下:

  • 1、High Level REST 客戶端“太重”。

相關(guān)依賴超過 30 MB,且很多都是非必要相關(guān)的。

api 暴露了很多服務(wù)器內(nèi)部接口。

  • 2、High Level REST 一致性差。

仍需要大量的維護(hù)工作。

  • 3、High Level REST 客戶端沒有集成 json/object 類型映射。

仍需要自己借助字節(jié)緩存區(qū)實(shí)現(xiàn)。

https://github.com/elastic/elasticsearch-java

Elasticsearch Java API?客戶端官方定義如下:

Elasticsearch Java API 客戶端為所有的 Elasticsearch API 提供請求和響應(yīng)處理。

它將請求處理轉(zhuǎn)給 Elasticsearch Low Level REST 客戶端,這也是 High Level 被廢棄而 Low Level ?REST 客戶端依然健在的原因,Low Level REST 客戶端負(fù)責(zé)處理 Http 連接建立和池化、重試機(jī)制等所有傳輸級別的問題。

Elasticsearch Java API Client 三個典型特點(diǎn):

干貨 | Elasticsearch Java 客戶端演進(jìn)歷史和選型指南

  • 特點(diǎn)1:對象構(gòu)造基于構(gòu)建者模式( builder pattern.)。

建造者模式(Builder Pattern)使用多個簡單的對象一步一步構(gòu)建成一個復(fù)雜的對象。該模式增強(qiáng)了客戶端代碼的可用性和可讀性。

舉例如下:

干貨 | Elasticsearch Java 客戶端演進(jìn)歷史和選型指南

  • 特點(diǎn)2:使用 lambda 構(gòu)建嵌套對象,從而編寫干凈、富有表現(xiàn)力的 DSL 變得容易。

分層 DSL 接近 elasticsearch 的 json 格式。

干貨 | Elasticsearch Java 客戶端演進(jìn)歷史和選型指南

干貨 | Elasticsearch Java 客戶端演進(jìn)歷史和選型指南

  • 特點(diǎn)3:應(yīng)用程序類能自動映射為 Mapping。

干貨 | Elasticsearch Java 客戶端演進(jìn)歷史和選型指南

https://github.com/elastic/elasticsearch-java

3、Elasticsearch 非官方客戶端

3.1 JEST 客戶端

Http REST 客戶端,2017年左右還比較新穎,我還做過推薦。

但,最新一次更新是 2 年前,所以已不推薦使用。

干貨 | Elasticsearch Java 客戶端演進(jìn)歷史和選型指南

原因:Elasticsearch 版本更迭太快,不做新版本適配,很多功能都可用或至少不好用。

https://github.com/searchbox-io/Jest

3.2 BBoss 客戶端

https://esdoc.bbossgroups.com/#/

干貨 | Elasticsearch Java 客戶端演進(jìn)歷史和選型指南

國產(chǎn)的能適應(yīng) 1.X——8.X 所有版本的 java rest 客戶端。

3.3 Spring data Elasticsearch 客戶端

最新版本為:Spring Data Elasticsearch 4.4,支持 Elasticsearch 7.17.3 版本。

干貨 | Elasticsearch Java 客戶端演進(jìn)歷史和選型指南

8.X 尚不支持,之前的觀察看,更新較慢。

使用 Spring Data,High Level REST Client 是默認(rèn)客戶端,且仍然支持 Java Transport 客戶端,目 前尚不支持 Elasticsearch Java API 客戶端。

Spring data Elasticsearch 官方文檔如下:

https://docs.spring.io/spring-data/elasticsearch/docs/current/reference/html/

實(shí)現(xiàn)推薦參考:

https://developer.okta.com/blog/2022/02/16/spring-data-elasticsearch

4、Elasticsearch java 客戶端如何選型?

選型關(guān)注要點(diǎn):

  • Elasticsearch 集群的版本。

  • 歷史版本的兼容性問題。

  • 未來升級版本、擴(kuò)展性問題。

  • 所選型的客戶端是否更新及時,能適配將來的版本。

如果當(dāng)前是:7.X 版本且不考慮升級,那就 High Level REST 客戶端。

如果當(dāng)前是:8.X 版本,那就 Elasticsearch Java API 客戶端。

如果當(dāng)前是:5.X、6.X 版本,推薦盡早升級集群版本。

JEST 已不更新和維護(hù),不推薦使用。

BBoss 客戶端,根據(jù)自己業(yè)務(wù)需要做選型。

Spring 框架的 Web 項(xiàng)目,可以使用 Spring Data Elasticsearch,但關(guān)注它的更新版本,截止:2022-06-17,支持到:7.17.3 版本。

5、小結(jié)

隨著 Elasticsearch 的版本快速更迭,Elasticsearch java 客戶端也在隨之變化。

本文以時間為主線梳理了 Elasticsearch 官方 java 客戶端的演進(jìn)歷史,并列舉常見的非 Elasticsearch 客戶端。

Elasticsearch java 客戶端琳瑯滿目、“亂花漸欲迷人眼”,但我們需要結(jié)合集群版本、集群的過去和將來,以發(fā)展的眼光選型適合自己的 Elasticsearch 客戶端。

你的 Elasticsearch 集群開發(fā)使用的什么 java 客戶端?有沒有坑?歡迎留言交流。

推薦閱讀

  1. 如何從0到1打磨一門 Elasticsearch 線上直播課?

  2. 重磅 | 死磕 Elasticsearch 方法論認(rèn)知清單(2021年國慶更新版)

  3. 如何系統(tǒng)的學(xué)習(xí) Elasticsearch ?

更短時間更快習(xí)得更多干貨!

和全球?1600+?Elastic 愛好者一起精進(jìn)!

干貨 | Elasticsearch Java 客戶端演進(jìn)歷史和選型指南

比同事?lián)屜纫徊綄W(xué)習(xí)進(jìn)階干貨!文章來源地址http://www.zghlxwxcb.cn/news/detail-410828.html

到了這里,關(guān)于干貨 | Elasticsearch Java 客戶端演進(jìn)歷史和選型指南的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • ElasticSearch-學(xué)習(xí)筆記04【Java客戶端操作索引庫】

    ElasticSearch-學(xué)習(xí)筆記04【Java客戶端操作索引庫】

    Java后端-學(xué)習(xí)路線-筆記匯總表【黑馬程序員】 ElasticSearch-學(xué)習(xí)筆記01【ElasticSearch基本介紹】 【day01】 ElasticSearch-學(xué)習(xí)筆記02【ElasticSearch索引庫維護(hù)】 ElasticSearch-學(xué)習(xí)筆記03【ElasticSearch集群】 ElasticSearch-學(xué)習(xí)筆記04【Java客戶端操作索引庫】 【day02】 ElasticSearch-學(xué)習(xí)筆記05【Spri

    2023年04月09日
    瀏覽(35)
  • Elasticsearch Java客戶端和Spring data elasticsearch-Elasticsearch文章三

    Elasticsearch Java客戶端和Spring data elasticsearch-Elasticsearch文章三

    https://www.elastic.co/cn/ 整合springboot看上一篇文章 一定要對應(yīng)好版本,Elasticsearch 的不同版本變化是真大, https://docs.spring.io/spring-data/elasticsearch/docs/4.4.10/reference/html/ Springboot: 2.7.10 spring-data-elasticsearch: 4.4.10 spring-boot-starter-data-elasticsearch: 2.7.10 elasticsearch-java: 7.17.9 https://github.com/

    2024年02月14日
    瀏覽(44)
  • Navicat客戶端歷史版本下載地址

    為了方便mysql等數(shù)據(jù)庫的用戶使用,特整理一些現(xiàn)有版本和歷史版本的下載地址,如有問題請?jiān)谠u論區(qū)聯(lián)系!后續(xù)會更新mysql免安裝版的部署方法。 歷史版本客戶端下載地址(下載地址.../navicat后面的三位數(shù)字,前兩位是大版本,后面是小版本,以下地址支持windows 64(x64)位

    2024年02月11日
    瀏覽(28)
  • windows環(huán)境安裝elasticsearch+kibana并完成JAVA客戶端查詢

    windows環(huán)境安裝elasticsearch+kibana并完成JAVA客戶端查詢

    elasticsearch 官網(wǎng)下載比較慢,有時還打不開,可以通過https://elasticsearch.cn/download/下載,先找到對應(yīng)的版本,最好使用迅雷下載,秒下的,我的下載速度可以達(dá)到40M/S 解壓后點(diǎn)擊 elasticsearch-7.10.0binelasticsearch.bat 運(yùn)行成功后,輸入http://120.0.0.1:9200,可以訪問說明ES啟動成功 點(diǎn)擊

    2024年02月14日
    瀏覽(27)
  • Elasticsearch8.x版本Java客戶端Elasticsearch Java API Client中常用API練習(xí)

    在Es7.15版本之后,es官方將它的高級客戶端RestHighLevelClient標(biāo)記為棄用狀態(tài)。同時推出了全新的java API客戶端Elasticsearch Java API Client,該客戶端也將在Elasticsearch8.0及以后版本中成為官方推薦使用的客戶端。 Elasticsearch Java API Client支持除Vector title search API和Find structure API之外的所有

    2024年04月11日
    瀏覽(25)
  • [elastic 8.x]java客戶端連接elasticsearch與操作索引與文檔

    為了方便演示,我關(guān)閉了elasticsearch的安全驗(yàn)證,帶安全驗(yàn)證的初始化方式將在最后專門介紹 其中,HotelDoc是一個實(shí)體類 帶安全驗(yàn)證的連接有點(diǎn)復(fù)雜,將下列代碼中CA證書的位置改為實(shí)際所在的位置就行了。 password為elastic的密碼,可以在我的另一篇文章中查看密碼的重置方式

    2024年04月11日
    瀏覽(27)
  • Elasticsearch:在 Java 客戶端應(yīng)用中管理索引 - Elastic Stack 8.x

    管理索引是客戶端應(yīng)用常用的一些動作,比如我們創(chuàng)建,刪除,打開 及關(guān)閉索引等操作。在今天的文章中,我將描述如何在 Java 客戶端應(yīng)用中對索引進(jìn)行管理。 我們需要閱讀之前的文章 “Elasticsearch:在 Java 客戶端中使用 truststore 來創(chuàng)建 HTTPS 連接”。在那篇文章中,我們詳

    2023年04月09日
    瀏覽(22)
  • Java客戶端調(diào)用elasticsearch進(jìn)行深度分頁查詢 (search_after)

    Java客戶端調(diào)用elasticsearch進(jìn)行深度分頁查詢 (search_after)

    前言 這是我在這個網(wǎng)站整理的筆記,有錯誤的地方請指出,關(guān)注我,接下來還會持續(xù)更新。 作者:神的孩子都在歌唱 具體的Search_after解釋,可以看我這篇文章 elasticsearch 深度分頁查詢 Search_after(圖文教程) 參考:https://blog.csdn.net/qq_44056652/article/details/126341810 作者:神的孩子

    2024年03月22日
    瀏覽(16)
  • 【ElasticSearch】基于 Java 客戶端 RestClient 實(shí)現(xiàn)對 ElasticSearch 索引庫、文檔的增刪改查操作,以及文檔的批量導(dǎo)入

    【ElasticSearch】基于 Java 客戶端 RestClient 實(shí)現(xiàn)對 ElasticSearch 索引庫、文檔的增刪改查操作,以及文檔的批量導(dǎo)入

    ElasticSearch 官方提供了各種不同語言的客戶端,用來操作 ES。這些客戶端的本質(zhì)就是組裝 DSL 語句,通過 HTTP 請求發(fā)送給 ES 服務(wù)器。 官方文檔地址:https://www.elastic.co/guide/en/elasticsearch/client/index.html。 在本文中,我們將著重介紹 ElasticSearch Java 客戶端中的 RestClient,并演示如何

    2024年02月08日
    瀏覽(29)
  • 【ElasticSearch】使用 Java 客戶端 RestClient 實(shí)現(xiàn)對文檔的查詢操作,以及對搜索結(jié)果的排序、分頁、高亮處理

    【ElasticSearch】使用 Java 客戶端 RestClient 實(shí)現(xiàn)對文檔的查詢操作,以及對搜索結(jié)果的排序、分頁、高亮處理

    在 Elasticsearch 中,通過 RestAPI 進(jìn)行 DSL 查詢語句的構(gòu)建通常是通過 HighLevelRestClient 中的 resource() 方法來實(shí)現(xiàn)的。該方法包含了查詢、排序、分頁、高亮等所有功能,為構(gòu)建復(fù)雜的查詢提供了便捷的接口。 RestAPI 中構(gòu)建查詢條件的核心部分是由一個名為 QueryBuilders 的工具類提供

    2024年01月16日
    瀏覽(41)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包