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