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