最流行的全文搜索引擎
Elasticsearch 是一款廣泛使用的開源分布式全文搜索引擎,,源于 Apache Lucene[1],,許可證為 Apache 2.0。由于出色的搜索引擎,、高擴(kuò)展性和豐富的統(tǒng)計(jì)分析能力,深受用戶喜愛。
基于 Lucene 的 Elasticsearch
2010 年開源的 Elasticsearch 隨著全球搜索引擎業(yè)務(wù)的飛速發(fā)展,,也變得更加流行。在國內(nèi)外積累了大量的核心用戶并受到社區(qū)的強(qiáng)烈歡迎,。根據(jù) DB-Engines[2] 網(wǎng)站對于 Search Engine 類數(shù)據(jù)庫的流行度趨勢統(tǒng)計(jì),,2016 年至今 Elasticsearch 始終保持第一。
Elastic 成立于 2012 年,,是很多來自硅谷的開源軟件獨(dú)角獸公司之一,。Elasticsearch 的成功離不開 Elastic 公司的成功運(yùn)營。隨著云計(jì)算技術(shù)的不斷發(fā)展壯大,,以 AWS 為首的云廠商 SaaS 模式 趨于火熱,,越來越多的用戶愿意接受 SaaS 模式,。部分云廠商將開源產(chǎn)品以服務(wù)的方式發(fā)布并盈利,,但并未回饋開源,。
Elastic 公司在這樣的背景下,,決定有針對性的修改了許可授權(quán),,各大云廠商們面臨在非授權(quán)的情況下,,將無法繼續(xù)更新 Elasticsearch 版本的困境(舊版本不影響)。
Elasticsearch 版本協(xié)議說明
AWS 沒有選擇與 Elastic 合作,,而是在 2019 年開始嘗試新的可能。2021 年 AWS 正式開源了基于 Elasticsearch 的 OpenSearch 項(xiàng)目,,并在 AWS 商店正式推出了 OpenSearch[3] 服務(wù)來取代原有的 Elasticsearch 服務(wù),。
這一系列事件,對全球云廠商對開源軟件的使用也許會(huì)產(chǎn)生深遠(yuǎn)的影響,。接下來我們梳理一下整個(gè)事件的時(shí)間線,。
時(shí)間線
2010 年 2 月
Elastic 發(fā)布了 Elasticsearch,源于 Apache Lucene,,許可證為 Apache 2.0,。
2018 - 2019 年
Elastic 修改了 Kibana(配套可視化工具) 和 Elasticsearch 的開源協(xié)議( ALv2 -> SSPL & Elastic 雙授權(quán)),意味著 7.10.2 版本后不再提供開源版本,。
2019 年 3 月
AWS 推出 Open Distro for Elasticsearch(OpenSearch 的前身),,一個(gè) 100% 的開源發(fā)行版。
2021 年 4 月
AWS 宣布推出 OpenSearch 項(xiàng)目,,基于 7.10.2 版本創(chuàng)建分支,,并重構(gòu)了所有 ODFE 插件與 OpenSearch 配合使用,ODFE 在 1.13 版本結(jié)束,。
2021 年 9 月
AWS 將 AWS Electicsearch Service 服務(wù)更新為 AWS OpenSearch Service,。
ELv2 與 SSPL 協(xié)議
事件中,以 Elastic 公司修改開源協(xié)議為重要轉(zhuǎn)折點(diǎn),。
ELv2:由 Elastic 制定的源代碼許可,。該協(xié)議適用于 Elastic 的分發(fā)版以及 Elasticsearch 和 Kibana 所有免費(fèi)和付費(fèi)功能的源代碼。ELv2 的目標(biāo)是在盡可能寬松的情況下防止濫用。該許可允許免費(fèi)使用,、修改,、創(chuàng)建衍生作品和重新分發(fā),但有三個(gè)基本的限制條件:
不得將產(chǎn)品作為托管服務(wù)提供給其他人
不得規(guī)避許可密鑰功能或刪除/隱藏受許可密鑰保護(hù)的功能
不得刪除或隱藏任何許可協(xié)議,、版權(quán)或其他聲明
SSPL:由 MongoDB 制定的源代碼許可,。針對云服務(wù)提供商做出了限制,即要求云服務(wù)提供商在未對項(xiàng)目做出貢獻(xiàn)的情況下,,不得發(fā)布自己的開源產(chǎn)品即服務(wù),。SSPL 允許用戶以自由且不受限制的方式使用并修改代碼成果,唯一的要求是:如果將產(chǎn)品以作為一種服務(wù)進(jìn)行交付,,那么必須同時(shí)公開發(fā)布所有關(guān)于修改及 SSPL 之下管理層的源代碼,。
影響與選擇
Elastic 公司決定修改開源協(xié)議,并不會(huì)對個(gè)人用戶使用造成影響,,只會(huì)限制云服務(wù)廠商將開源產(chǎn)品轉(zhuǎn)化為軟件即服務(wù)的形式,。對于沒有獲得授權(quán)的云廠商來說,除了提供到最后一個(gè)開源版本的 Elasticsearch 服務(wù)之外,,就需要開始考慮其他替代方案了,。
目前各大云廠商主要采取的如下兩種方案:
PlanA - 與 Elastic 達(dá)成商業(yè)授權(quán)協(xié)議,深度合作,。
PlanB - 未獲得商業(yè)授權(quán)的云廠商,繼續(xù)使用基于 ALv2 協(xié)議下的 Elasticsearch 的開源(OSS)版本,,并嘗試尋找新的替代方案,。
目前為止,與 Elastic 達(dá)成合作的云服務(wù)供應(yīng)商:Microsoft,、Google,、阿里巴巴、騰訊,、Clever Cloud 等,。
新的選擇?
OpenSearch 是一個(gè)社區(qū)驅(qū)動(dòng)的開源搜索和分析套件,,源自 Apache 2.0 許可的 Elasticsearch 7.10.2 和 Kibana 7.10.2,。它由一個(gè)搜索引擎守護(hù)進(jìn)程 OpenSearch 和一個(gè)可視化和用戶界面 OpenSearch Dashboards 組成。OpenSearch 使人們能夠輕松攝取,、保護(hù),、搜索、聚合,、查看和分析數(shù)據(jù),。
演進(jìn)歷程
項(xiàng)目早期,Open Distro 的核心仍然是普通的 Elasticsearch。Amazon 對 Open Distro 所做的是為 Elasticsearch 和 Kibana 添加功能,。
OpenSearch 實(shí)際上是 Elasticsearch 的一個(gè)分支,。
一方面 OpenSearch 正在從開源 Elasticsearch 停止的地方開始,代碼中任何有 Elasticsearch 或 Kibana 引用的地方,,最后都會(huì)更改為 OpenSearch ,。另一方面 Open Distro 所有功能都將添加到 OpenSearch,OpenSearch 后續(xù)將致力于保持其分支開源,,并得到 AWS 的支持,。
可替代性
如果說 Elasticsearch 提供了非常棒的能力,利用它的大數(shù)據(jù)工具來幫助進(jìn)行全棧監(jiān)控,、自動(dòng)化,、數(shù)據(jù)重新平衡、IP 過濾等的各種規(guī)模的組織,,那么 OpenSearch 就是致力于聚合,、查看和分析數(shù)據(jù)的企業(yè)的洞察引擎解決方案。
從方案的角度講,,兩者都提供了大數(shù)據(jù)解決方案,,且底層實(shí)現(xiàn)一致。
從功能的角度講,,OpenSearch 覆蓋了開源版 Elasticsearch 的所有功能,,并為其提供媲美 Elasticsearch X-Pack 的商業(yè)能力。
無論 Elasticsearch 還是 OpenSearch,,用戶的核心需求是搜索,、安全、監(jiān)控,、告警,、跨集群同步等集群服務(wù),后者也可以完全滿足需求,。
最新版本
從 2021 年 4 月 12 日推出 OpenSearch 項(xiàng)目以來,,截止到現(xiàn)在已更新至 1.1.0 版本,雖然該版本已媲美 X-Pack 部分功能,。但是目前實(shí)踐上還需要更多的驗(yàn)證,。
隨著 1.1.0 的推出,OpenSearch 已經(jīng)在向自己的方向前進(jìn),。有許多已推出的功能和增強(qiáng)功能,,包括:
添加碎片級后壓框架,以提高 OpenSearch 索引的可靠性,。
添加許多新的可觀測功能,,以幫助您分析跟蹤和日志數(shù)據(jù),。
OpenSearch 的 k-NN 插件將為更新的FAISS算法增加支持,以提高性能,。
異常檢測將增加信號導(dǎo)致特定異常的可見性,。
擴(kuò)集群復(fù)制同步能力。
Elastic 看 OpenSearch
在 OpenSearch 服務(wù)推出后,,Elastic 官網(wǎng)也對該服務(wù)為用戶提出了一些熱門問題[4],,并做出了自己的詮釋。
什么是 OpenSearch 項(xiàng)目,?
為什么 OpenSearch 項(xiàng)目 fork 是從 Elasticsearch 和 Kibana 創(chuàng)建的,?
Amazon OpenSearch Service 是否具有 Elasticsearch 中沒有的任何功能?
展望
在云廠商們各自的生態(tài)環(huán)境下,,開發(fā)者將采用不同的模式來完成產(chǎn)品的迭代,,從不同的產(chǎn)品視角來滿足不同的用戶需求。
可預(yù)見在未來很長一段時(shí)間里,, Elasticsearch 仍然會(huì)繼續(xù)引領(lǐng)潮流,,占據(jù)該領(lǐng)域的霸主地位。而 OpenSearch 依托于 AWS ,,相信也會(huì)成為一個(gè)優(yōu)秀的搜索引擎解決方案,。
許可協(xié)議限制了在云廠商的使用,開源則提供了更多的可能,。當(dāng)云廠商無法使用 Elasticsearch 后續(xù)版本的時(shí)候,,或許可以考慮 OpenSearch。
[1]. Apache Lucene:http://lucene.apache.org
[2]. DB-Engines:https://db-engines.com
[3]. OpenSearch:https://opensearch.org
[4]. What is opensearch: https://www.elastic.co/what-is/opensearch