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