OpenSearch 是一种分布式,由社区驱动并取得 Apache 2.0 许可的 100% 开源搜索和分析套件,可用于一组广泛的使用案例,如实时应用程序监控、日志分析和网站搜索。OpenSearch 提供了一个高度可扩展的系统,通过集成的可视化工具 OpenSearch 控制面板为大量数据提供快速访问和响应,使用户可以轻松地探索他们的数据。OpenSearch 由 Apache Lucene 搜索库提供技术支持,它支持一系列搜索及分析功能,如 k-最近邻(KNN)搜索、SQL、异常检测、Machine Learning Commons、Trace Analytics、全文本搜索,等等。

问:我为什么应该使用 OpenSearch?

OpenSearch 帮助您为一系列使用案例(如日志分析、应用程序搜索、企业搜索,等等)轻松地提取、保护、搜索、聚合、查看以及分析数据。使用 OpenSearch,您可以从可使用、修改、扩展、盈利化和转售的 100% 开源产品中获益。OpenSearch 项目合作伙伴的数量日益增加,他们可以提供各种服务,如专业支持、增强功能以及托管式 OpenSearch 服务。OpenSearch 项目继续提供安全、高质量的搜索和分析套件,并提供丰富的新功能和创新功能路线图

问:为什么创建 OpenSearch?

开发人员接受开源软件有很多原因,其中最重要的一个原因是他们可以自由地在任何地方和以任何方式使用该软件。2021 年 1 月 21 日,Elastic NV 宣布,他们将改变软件许可策略,不在宽松式 Apache 2.0 版本(ALv2)下发布 Elasticsearch 和 Kibana 的新版本。相反,Elastic 发布 Elasticsearch 和 Kibana,并在弹性许可证或服务器端公共许可证(SSPL)下提供源代码。这些许可证不是开源的,不会为用户提供同样的自由。由于部分开发人员希望他们的软件是开源的,而且他们想要避免被单个供应商锁定,因此我们决定从 Elasticsearch 和 Kibana 的最近 ALv2 版本创建并维护分叉。该分支被称为 OpenSearch 并在 ALv2 下提供。

问:OpenSearch 和 Amazon OpenSearch Service 有什么关系?

Amazon OpenSearch Service 是一项由 AWS 托管的服务,可允许您运行与扩展 OpenSearch 集群,而不必担心管理、监控和维护您的基础设施,并且无需具备有关操作 OpenSearch 集群的深厚专业知识。2021 年 9 月,我们在 Amazon OpenSearch Service 中发布了对 OpenSearch 的支持(从 1.0 版本开始),并将该服务从 Amazon Elasticsearch Service 重新命名为 Amazon OpenSearch Service。自那以后,服务已支持历经多个版本添加到 OpenSearch 的多项新功能。部分示例包括,支持跨集群复制、Trace Analytics、数据流、转换、一种新的可观测性用户界面,以及 OpenSearch 控制面板中的笔记本。除此以外,我们还对 k-NN、异常检测、PPL、SQL 和提示进行了大幅改进。虽然 Amazon OpenSearch Service 继续支持旧式的开源 Elasticsearch 版本(7.10 及更早版本),我们仍强烈建议您在服务上使用 OpenSearch,以便从开源 OpenSearch 版本中的新功能获益。

问:Amazon OpenSearch Service 将会支持 7.10 以上的新 Elasticsearch 版本吗?

不支持。7.10 以上的 Elasticsearch 版本不是开源的,而且不在宽松式 ALv2 许可下发布。虽然 Amazon OpenSearch Service 将继续支持 7.10 以及更早的开源 Elasticsearch 版本,但我们将在未来利用新的开源 OpenSearch 版本为在其各种使用案例(如日志分析、搜索和可观测性)中采用 Amazon OpenSearch Service 的客户提供功能和创新。

问:OpenSearch 会对新的 Elasticsearch 版本保持兼容性与功能一致性吗?

OpenSearch 的路线图由社区驱动,而且很多企业(包括 AWS 在内)会为开源代码库贡献新功能。OpenSearch 被广泛用于各种使用案例,如实时应用程序监控、日志分析和网站搜索等。OpenSearch 的路线图应独立于 Elasticsearch 的路线图接受检视,而 OpenSearch 的重心将放在提供社区和客户所要求的新功能及创新。虽然 OpenSearch 可能包括与 Elasticsearch 所提供新功能类似的功能(反之亦然),但两个项目在实施所有功能时所采取的方式迥异。OpenSearch 的首要目标将会是,通过构建更好地满足 OpenSearch 社区以及我们的客户的需求。

问:OpenSearch 提供哪些功能?

功能 优势
高级安全功能 提供加密、身份验证、授权和审计功能。他们不包括与 Active Directory、LDAP、SAML、Kerberos、JSON Web 令牌等的集成。OpenSearch 还提供对索引、文档和字段的基于角色的细粒度访问控制。
内置的搜索功能 提供一系列功能,以帮助您对搜索体验进行自定义,如全文本查询、自动完成、滚动搜索、可自定义的评分与排名,等等。
SQL 查询语法 提供熟悉的 SQL 查询语法。使用聚合、分组依据和 where 子句调查您的数据。阅读 JSON 文档或 CSV 表格形式的数据,以便您可以灵活地使用最适合您的格式。
SQL 中的搜索支持 让您可以使用熟悉的 SQL 查询语法,同时访问丰富的搜索功能集,如模糊匹配、提升、短语匹配,等等。
Data Prepper Data Prepper 是一种服务器端数据收集器,可为下游分析和可视化筛选、丰富、转换、规范化以及聚合数据。Data Prepper 让用户可以构建自定义管道,以便优化应用程序的运营视图。
Trace Analytics Trace Analytics 提供一种在 OpenSearch 中对 OpenTelemetry 数据进行提取与可视化的方式。这些数据可以帮助您查找与修复分布式应用程序中的性能问题。
应用程序分析 利用应用程序分析来构建自定义可观测性应用程序,以便查看您的系统的可用性状态。您可以在这些系统中将日志事件和跟踪及指标数据整合到整体系统运行状况的单一视图当中。这让您可以在日志、跟踪和指标之间快速进行调整,深入挖掘任何问题的根源。
竖线处理语言 竖线处理语言提供一种熟悉的查询语法,其中包含一组由竖线(|)分隔的命令来查询数据。
运营面板 使用竖线处理语言(PPL)构建运营面板,以整理生成的可观测性可视化内容。
事件分析 利用竖线处理语言(PPL)查询以交互方式构建和查看有关您的数据(包括跟踪日志相关性)的不同可视化内容。
ML Commons 库 使用一系列机器学习算法(如 k 均值和异常检测)来训练模型并预测数据中的趋势。ML Commons 与 PPL 和 REST API 直接集成。
报告 计划、导出和分享控制面板、保存的搜索、提示和可视化中的报告。 
异常检测 利用基于 Random Cut Forest(RCF)算法的 Machine Learning 异常检测,或在摄取您的数据时自动检测异常。与提示相结合,以近乎实时地监控数据并自动发送提示通知。 
索引管理 定义自定义策略,以自动化常规索引管理任务,如翻转和删除,并将它们应用于索引和索引模式。
索引转换 为以特定字段为中心的数据创建汇总视图,从而以不同的方式对数据进行可视化或分析。 例如,假设您有分散在不同字段和类别的航班数据,而您想要查看按航班、季度和价格整理的数据汇总。您可以使用转换作业来创建新的汇总索引,并按这些特定类别加以整理。
索引汇总 挑选您感兴趣的字段,然后使用索引汇总创建新索引,仅将这些字段聚合到较粗时间存储桶。您可以以非常低的成本存储数月或几年的历史数据,并享有相同的查询性能。
性能分析器和 RCA 框架 查询大量集群性能指标和聚合。使用 PerfTop、命令行界面 (CLI) 快速显示和分析这些指标。使用根本原因分析 (RCA) 框架调查集群中的性能和可靠性问题。
异步搜索 在不担心查询超时的情况下运行复杂的查询,并使异步搜索查询在后台运行。跟踪查询进度并在部分结果可用时检索它们。
Trace Analytics 摄取并可视化分布式应用程序的 OpenTelemetry 数据。可视化这些应用程序之间的事件流,以识别性能问题。
提示 自动监控数据并将提示通知自动发送给利益攸关方。使用直观界面和强大的 API 轻松设置、管理和监控提示。使用 OpenSearch 的完整查询语言和脚本功能制定高度特定的提示条件。
Bucket Level Alerting 创建提示策略,针对数据中的分组趋势发送提示。例如,您可以选择在每个主机的平均 CPU 高于所需阈值时发送提示。
跨集群复制 从一个 OpenSearch 集群复制索引、映射和元数据到另一个集群,以便创建跨集群冗余或将报告查询卸载到次集群。
k-NN 搜索 使用 Machine Learning,像运行任何常规的 OpenSearch 查询一样,在数千个维度的数十亿文档上运行最近邻搜索算法。使用聚合和筛选子句进一步细化相似度搜索操作。k-NN 相似度搜索支持产品推荐、欺诈检测、图像和视频搜索、相关文档搜索等使用案例。
控制面板笔记本 组合控制面板、可视化、文本等在分析数据时提供上下文和详细说明。
OpenSearch 客户端 OpenSearch 支持一系列语言客户端,如 Go、JavaScript、Python、Java,等等。使用这些客户端来构建与 OpenSearch 直接集成的应用程序。

问:由谁赞助与维护 OpenSearch?

很多企业(包括 AWS、SAP、CapitalOne、RedHat、Logz.io、Aiven.io、Bonsai、Logit.io、InstaCluster 和 BAInsight)公开支持 OpenSearch。

我们鼓励并接受来自社区的贡献,而且在贡献时不要求签订《提供者许可协议》(CLA)。此外,如果您是积极的贡献者,并希望在项目中担负更多责任,我们为非 AWS 员工定义了一套流程,您可以在这里取得 OpenSearch 项目存储库的维护者权限。 

问:OpenSearch 将有怎样的未来?

我们在 2021 年 7 月第一次正式发布 OpenSearch 1.0 版本,并在那以后陆续推出 4 个新版本,而 OpenSearch 2.0 则是最新的版本。凭借社区的浓厚兴趣和大力支持,我们围绕日志分析、搜索和可观测性为关键使用案例推出了多项新功能。这些领域将继续作为 OpenSearch 和我们的可视化层 OpenSearch 控制面板未来改进的关键主题。请查看路线图,快速概览 OpenSearch 所关注的关键领域。 

问:OpenSearch 如何取得许可?

OpenSearch 项目中的所有软件均在 Apache 许可证版本 2.0(ALv2)下发布。ALv2 授予人们所期望的与开源软件相匹配的易于理解和许可的使用权利:能够在他们想要的地方和以想要的方式使用、修改、扩展、盈利化和转售开源软件的自由。对于 OpenSearch,我们相信此许可证将支持广泛采用和贡献,有益于社群的所有成员。我们还为 OpenSearch 商标发布了许可使用指南,以便您可以使用名称来推广您的产品。

问:我可以在哪里找到有关 OpenSearch 客户端及 API 兼容性的更多信息?

请查阅开源 OpenSearch 网站上的常见问题。“常见问题”也是重要的信息来源,所涉及主题包括工具和插件、升级兼容性、一般社区问题,以及您可以如何为 OpenSearch 做贡献并从中获益。

其他资源

OpenSearch 包括某些来自 Elasticsearch B.V. 和其他源代码且经 Apache 许可的 Elasticsearch 代码。Elasticsearch B.V. 不是其他源代码的来源。ELASTICSEARCH 是 Elasticsearch B.V. 的注册商标