Elasticsearch和OpenSearch是處理搜索和分析工作負載的強大工具,提供可擴展性、實時能力以及豐富的插件和集成生態系統。由於其成熟的生態系統,Elasticsearch被廣泛應用於各行業的全文搜索、日誌監控和數據可視化。OpenSearch是Elasticsearch的社區驅動分支,提供了一個完全開源的選擇,具有許多相同的功能,使其成為組織優先考慮開源原則和成本效益的優秀選擇。
如果您使用的是Elasticsearch版本高達7.10並希望避免Elasticsearch的SSPL許可證引入的許可限制,則應考慮遷移到OpenSearch。對於那些希望繼續訪問開源生態系統並保持與現有Elasticsearch API和工具兼容性的人來說,這也是一個理想的選擇。對於專注於社區驅動創新、透明治理或成本控制的組織來說,OpenSearch是一個引人注目的選項。
歷史
Elasticsearch 最初由Shay Banon於2010年開發,是一個基於Apache Lucene構建的強大開源搜索和分析引擎。它因可擴展性、分佈式特性和在全文搜索、日誌分析和實時數據處理方面的強大功能而迅速受到歡迎。多年來,Elasticsearch成為了Elastic Stack(原ELK Stack)的一部分,與 Kibana 、Logstash和Beats集成,提供端到端的數據管理解決方案。
然而,2021年發生了重大變化,Elastic將Elasticsearch和Kibana轉換為更為嚴格的SSPL許可證。作為回應,AWS和開源社區分叉了Elasticsearch 7.10和Kibana,創建了OpenSearch,遵循Apache 2.0許可證。OpenSearch自此演變為一個由社區驅動的項目,確保提供一個真正的開源替代方案,具有可比較的功能和針對搜索、可觀察性和分析用例的持續開發。
為什麼要遷移到OpenSearch?
1. 開源承諾
OpenSearch遵循Apache 2.0許可證,確保真正的開源可訪問性。相比之下,Elasticsearch轉向更為嚴格的SSPL許可證引起了有關供應商鎖定和減少社區驅動貢獻的擔憂。
2. 成本效益
OpenSearch 消除了與 Elasticsearch 新版本相關的潛在授權費用,使其成為尋求具成本效益解決方案而不妨礙功能的組織的吸引選擇。
3. 兼容性
OpenSearch 與最高到 7.10 版本的 Elasticsearch 保持兼容,包括許多相同的 API 和工具。這確保了平穩的遷移,對現有應用程式和工作流程的干擾最小。
4. 積極的開發和支持
在 AWS 和活躍社群的支持下,OpenSearch 獲得持續的更新、功能增強和安全補丁。其開放治理模型促進了創新和協作,確保平台不斷發展以滿足用戶需求。
5. 可自定義和靈活性
與專有系統相比,OpenSearch 允許更大的自定義和靈活性,使組織能夠根據特定用例調整其部署,而不受授權條款的限制。
6. 漸進生態系統
OpenSearch 提供 OpenSearch Dashboards(Kibana 的替代品)和針對可觀察性、日誌分析和全文搜索的插件。這些工具擴展了其在各個領域的可用性,同時確保與用戶需求的持續對齊。
什麼時候遷移
- 授權問題: 如果您希望避免 Elastic 在 7.10 版本後引入的 SSPL 授權限制。
- 預算限制:在保留強大的搜索和分析引擎的情況下,盡量降低與商業許可相關的成本。
- 未來擴展性:採用具有透明開發路線圖和強大社區支持的平台。
- 功能相容性:當使用Elasticsearch 7.10或更早版本支持的功能時,因為這些功能與OpenSearch完全兼容。
- 定制需求:當組織的目標需要更大的靈活性、開放治理或社區主導的創新時。
遷移至OpenSearch可確保您保持一個強大的、以開源為基礎的平台,同時避免與Elasticsearch許可模型相關的潛在限制和成本。
遷移前檢查清單
從Elasticsearch遷移到OpenSearch之前,請按照此檢查清單確保順利成功地過渡:
1. 評估版本相容性
- 確認您的Elasticsearch版本是否與OpenSearch相容。OpenSearch支持Elasticsearch版本高達7.10。
- 檢查任何API或插件依賴項,以確保它們在OpenSearch中得到支持。
2. 評估使用專有功能
- 識別任何專有功能或插件(例如,Elastic的機器學習功能),這些功能在OpenSearch中可能沒有對應的功能。
- 評估您的Elasticsearch集群中使用的第三方工具或擴展是否會受到影響。
3. 備份您的數據
- 使用快照 API 創建 Elasticsearch 索引的完整備份,以避免任何潛在的資料損失:
Shell
PUT /_snapshot/backup_repo/snapshot_1?wait_for_completion=true
- 確保備份儲存在安全且可訪問的位置以便恢復。
4. 檢查集群配置
- 記錄當前的Elasticsearch集群設置,包括節點配置、分片分配和索引模板。
- 將這些設置與OpenSearch進行比較,以識別任何所需的調整。
5. 在測試環境中進行測試
- 設置一個測試環境以模擬遷移過程。
- 在OpenSearch測試集群中恢復數據快照,以驗證兼容性和功能性。
- 在測試環境中測試您的應用程序、查詢和工作流程,以便及早檢測問題。
6. 檢查API和查詢兼容性
- 檢查應用程序中使用的Elasticsearch API和查詢語法。OpenSearch保持大多數API的兼容性,但可能存在輕微差異。
- 使用OpenSearch的API兼容模式以獲得更順利的過渡。
7. 更新應用程序和客戶端
- 將Elasticsearch客戶端庫替換為OpenSearch兼容的庫(例如,
opensearch-py
用於Python或OpenSearch Java客戶端)。 - 測試客戶端集成,以確保應用程序與OpenSearch集群正確互動。
8. 驗證插件支持
- 確保在Elasticsearch中使用的任何插件(例如分析、安全性或監控插件)在OpenSearch中可用或有替代品。
- 識別可能增強您的集群功能的OpenSearch專用插件。
9. 通知利益相關者
- 向所有相關利益相關者傳達遷移計劃、時間表和預期的停機時間(如果有的話)。
- 確保負責應用程式、基礎設施和數據的團隊為遷移做好準備。
10. 計劃回滾
-
制定回滾計劃,以備在遷移過程中出現問題時使用。該計劃應包括從備份中恢復原始Elasticsearch集群和數據的步驟。
11. 監控資源
-
確保您的基礎設施能夠支持遷移過程,包括快照的磁碟空間和足夠的集群容量以進行恢復。
通過完成此檢查清單,您可以最小化風險,識別潛在挑戰,並確保從Elasticsearch成功遷移到OpenSearch。
逐步遷移指南
1. 安裝OpenSearch
- 從 opensearch.org 下載適合的 OpenSearch 版本。
- 根據官方文檔設置 OpenSearch 節點,確保與現有的 Elasticsearch 設置具有相似的叢集配置。
2. 從 Elasticsearch 匯出數據
- 使用快照 API 來備份您的Elasticsearch索引:
Shell
PUT /_snapshot/backup_repo/snapshot_1?wait_for_completion=true
-
確保快照存儲在可供 OpenSearch 訪問的存儲庫中。
3. 將數據導入 OpenSearch
- 在 OpenSearch 中註冊快照儲存庫:
Shell
PUT /_snapshot/backup_repo
{
"type": "fs",
"settings": {
"location": "path_to_backup",
"compress": true
}
}
- 將快照恢復到 OpenSearch:
Shell
POST /_snapshot/backup_repo/snapshot_1/_restore
4. 更新應用程式和客戶端
- 將您的應用程式的 Elasticsearch 客戶端庫更新為相容的 OpenSearch 客戶端,例如 OpenSearch Python 客戶端 (
opensearch-py
) 或 Java 客戶端。 - 在您的應用程式配置中將 Elasticsearch 端點替換為 OpenSearch 端點。
5. 驗證數據和查詢
- 確認所有數據已成功恢復。
- 測試查詢、索引操作和應用程式工作流程,以確保一切按預期運行。
6. 監控和優化
- 使用 OpenSearch Dashboards(前身為 Kibana)來監控集群健康和性能。
- 如果需要,啟用加密、身份驗證和基於角色的訪問控制等安全功能。
遷移後考慮事項
1. 插件和功能
-
如果您依賴 Elasticsearch 插件,請確認其可用性或尋找 OpenSearch 替代品。
2. 性能調優
- 優化 OpenSearch 集群設置以符合您的工作負載需求。
- 利用 OpenSearch 特有的功能,如超暖存儲,以實現成本效益的數據保留。
3. 社區參與
- 加入 OpenSearch 社區以獲取支持和更新。
- 監控發行說明,以隨時了解新功能和改進。
從 Elasticsearch 遷移到 OpenSearch 的挑戰與提示
1. 插件相容性
挑戰
某些 Elasticsearch 插件,特別是專有插件,可能在 OpenSearch 中沒有直接的對應。
提示
- 審核您當前的 Elasticsearch 插件並識別其依賴性。
- 研究 OpenSearch 的插件生態系統或替代的開源工具以取代缺失的功能。
- 考慮 OpenSearch 的內建功能(如 OpenSearch Dashboards)是否符合您的需求。
2. API 差異
挑戰
儘管 OpenSearch 與 Elasticsearch APIs 保持相容至 7.10 版本,但細微的差異或已棄用的端點可能會影響功能。
提示
- 使用 OpenSearch 的 API 相容模式逐步測試和調整 API。
- 檢視 API 文檔,並用建議的替代方案取代已棄用的端點。
3. 數據遷移
挑戰
遷移大型數據集可能耗時且容易出錯,特別是當存在格式或架構差異時。
提示
- 使用快照和恢復的方法進行高效的數據傳輸。
- 在階段環境中測試恢復過程以確保數據完整性。
- 通過運行關鍵查詢來驗證遷移後的數據,以確認一致性。
4. 性能調優
挑戰
OpenSearch 和 Elasticsearch 可能在集群配置和性能調優上存在差異,這可能導致遷移後的性能不佳。
提示
- 使用 OpenSearch 儀表板或其他監控工具監控集群性能。
-
調整分片大小、索引策略和資源分配,以優化集群性能。
5. 客戶端和應用集成
挑戰
使用 Elasticsearch 客戶端庫的應用可能需要更新以與 OpenSearch 一起工作。
提示
- 將 Elasticsearch 客戶端替換為與 OpenSearch 兼容的版本,例如 opensearch-py(Python)或 OpenSearch Java 客戶端。
- 測試應用工作流程和查詢執行,以確保順利集成。
6. OpenSearch 的有限功能
挑戰
某些專有的 Elasticsearch 功能(例如,機器學習任務、Elastic Security)在 OpenSearch 中不可用。
提示
- 識別 OpenSearch 中缺失的關鍵功能,並確定其對您使用案例的重要性。
- 探索第三方或開源替代方案,以取代不可用的功能。
7. 培訓與熟悉度
挑戰
熟悉 Elasticsearch 的團隊在過渡到 OpenSearch 時可能面臨學習曲線,特別是在叢集管理和新功能方面。
建議
- 提供培訓和文檔,使您的團隊熟悉 OpenSearch 的工具和工作流程。
- 利用 OpenSearch 的活躍社區和論壇以獲取額外支持。
8. 實時數據與停機時間
挑戰
對於實時系統,確保在遷移過程中最小化停機時間可能很困難。
建議
- 在低流量時期計劃遷移。
- 使用藍綠部署策略在叢集之間無縫切換。
- 在遷移窗口期間,使用 Logstash 或 Beats 等工具將新數據同步到 OpenSearch。
9. 可擴展性與未來增長
挑戰
確保新的 OpenSearch 叢集能夠應對未來的增長和可擴展性需求。
建議
- 通過設計支持水平擴展的叢集架構來規劃可擴展性。
- 利用 OpenSearch 的分佈式架構來優化資源使用。
10. 社群支持
挑戰
雖然 OpenSearch 擁有不斷增長的社群,但某些進階問題可能缺乏詳細的文件或第三方解決方案。
建議
- 透過論壇和 GitHub 與 OpenSearch 社群互動以尋求故障排除的幫助。
- 定期監控 OpenSearch 的更新並為社群作出貢獻,以獲得更好的見解。
通過預見這些挑戰並遵循這些建議,組織能夠有效地導航遷移過程,確保在維持搜尋和分析性能的同時實現無縫過渡。
結論
從 Elasticsearch 遷移到 OpenSearch 是組織為了與開源原則保持一致、降低成本並保持與既有搜尋和分析工作流程相容而做出的戰略決策。雖然遷移過程面臨著插件相容性、API 差異和數據遷移複雜性等挑戰,但這些問題可以通過仔細規劃、徹底測試以及利用充滿活力的 OpenSearch 社群來有效管理。
Source:
https://dzone.com/articles/transition-from-elasticsearch-to-opensearch