怎么樣做國際網(wǎng)站生意seo知識培訓(xùn)
不同版本的ES差異非常大,包括不局限于ES語法、架構(gòu)、API、集群搭建等等。這些差異足以導(dǎo)致不同版本是否能滿足你的業(yè)務(wù)場景以及后續(xù)開發(fā)維護(hù)成本等各種問題。
先說結(jié)論,以個(gè)人實(shí)踐經(jīng)驗(yàn)及綜合考慮推薦使用 7.x 版本中的 7.10版本
ES版本對比
以下是通過網(wǎng)上大量資料搜索整理對比了對各個(gè)版本差異匯總出的一個(gè)表格
類型\版本 | 6.x | 7.x | 8.x | 建議 |
Licence | Apache 2.0 | 7.0 ~ 7.10 Apache 2.0 7.11++ SSPL | SSPL | 建議選擇更友好的Apache2.0版本,SSPL協(xié)議對于想要讓ES做為PAAS對外提供服務(wù)的話,將會面臨es廠商的限制 |
云廠商支持程度 | 騰訊、阿里云均支持, 華為不支持 | 騰訊云支持7.10.1、7.14.2 阿里云ES普通版支持7.7、7.10、7.16 阿里云ES Serverless只支持7.10.x 華為云支持7.6.2, 7.10.2 | 騰訊支持 8.11.3 阿里云ES普通版支持8.5、8.9 華為不支持 | 各云廠商也主要在推廣7.x版本,穩(wěn)定性及占用率更高,建議選擇7.x中的7.10.0版本 |
發(fā)版時(shí)間 | 初版2016 | 2019年 | 2021年底 | 建議選擇7.x版本,經(jīng)歷將近4年,穩(wěn)定性已經(jīng)經(jīng)過驗(yàn)證,6.x和8.x一個(gè)太老一個(gè)太新 |
特性差異 | / | 集群配置簡化,master選舉進(jìn)行了優(yōu)化, 能夠避免集群腦裂問題; 索引創(chuàng)建已經(jīng)去除了type,更加簡化; 索引查詢算法升級,查詢性能有優(yōu)化; 提供安全策略; Kibana更輕量化,更易用; | ES API進(jìn)行了升級方便后續(xù)升級使用; 更加安全,es默認(rèn)開啟了一些安全功能; 新的搜索API 特性,比如支持NLP等; | 7.x基本也能滿足目前需求,穩(wěn)定性也更有保障 |
JDK版本 | Java 8 | 7.0.x-7.4.x 支持8 7.5.x-7.14.x 支持8-11 7.15.x-7.17.x 支持8/11/17 | ||
Spring Boot兼容性 | 2.1 ~ 2.2版本對6.x支持 | 2.3 ~ 2.7版本對7.x支持 | / | 這塊主要看你Spring Boot框架版本了 |
ES客戶端SDK版本選擇
結(jié)論 :使用spring官方提供的spring-boot-es-starter
以下為各種客戶端對比
客戶端 | 適用版本 | 優(yōu)點(diǎn) | 缺點(diǎn) | 建議 |
TransportClient | 5.x 6.x | 啟動速度快,輕量級,可創(chuàng)建極多連接,與應(yīng)用程序解耦;推薦使用原生的,ES本身就很簡單,靈活性很高 | 分發(fā)或查詢數(shù)據(jù)速度較慢,不能獲取指定節(jié)點(diǎn)數(shù)據(jù),高版本已經(jīng)廢棄 | 不建議使用 |
JestClient | 5.x 6.x 7.x | 提供Restful API, 原生ES API不具備;若ES集群使用不同的ES版本,使用原生ES API會有問題,而Jest不會;更安全(可以在Http層添加安全處理);JestClient是ElasticSearch的Java HTTP Rest客戶端; JestClient填補(bǔ)了 ElasticSearch缺少HttpRest接口客戶端的空白; JestClient可以跨版本 | 18年已經(jīng)停止更新,7.x、8.x版本兼容性存疑 | 不建議使用 |
RestClient low-level-rest-client | 5.0+ | 基于Http Client 進(jìn)行的簡單封裝,RestClient可以跨版本,支持到目前8.x所有版本。 | HttpClient和Jsoup都不直接支持發(fā)送DELETE方法帶參數(shù)的請求(官方高版本已經(jīng)放棄使用)。使用成本較高 | 不推薦 |
high-level-rest-client | 7.2.0-7.16.x | 官方基于RestClient進(jìn)行的封裝,提供一系列API方便對ES的使用 | 在7.17版本后官方又廢棄了 | 7部分版本推薦使用 |
New ElasticsearchClient | 7.17+ | 為最新官方提供的版本 | 較高版本es適用 | 8.x官方推薦使用 |
spring-boot-es-starter | 3.0+ | spring官方封裝的ES api,使用起來相對簡單,也spring兼容性也能保障,教程也比較多。 | 需要與使用的es版本進(jìn)行匹配 | 推薦使用 |