什么是 Elasticsearch?
Elasticsearch 是一个基于 Apache Lucene 构建的开源 RESTful 分布式搜索和分析引擎。它旨在处理大量数据,使其成为日志和事件数据管理的热门选择。Elasticsearch 还以其实时功能而闻名,允许用户在数据模式发生时对其进行探索、分析和可视化。
除了日志和事件数据管理之外,Elasticsearch 还常用于全文搜索和运营智能用例。它旨在具有可扩展性、弹性和快速性,允许您近乎实时地索引和搜索数据。Elasticsearch还支持复杂查询以执行详细分析,并支持多租户,以便轻松管理多个索引。
Elasticsearch 的主要特性之一是其分布式特性。这意味着索引可以划分为分片,每个分片都是一个独立的索引。此功能允许将数据分布在服务器群集中,从而简化对大型数据集的处理。
什么是 AWS OpenSearch?
OpenSearch 是 AWS 于 2021 年创建的一个开源项目,是 Elasticsearch 7.10.2 的一个分支。这意味着它具有与 Elasticsearch 相同的基本功能,但从那时起,该项目在几个方面与 Elasticsearch 不同。
除了 OpenSearch 之外,Amazon 还提供完全托管的搜索和分析服务,称为 AWS OpenSearch。它包括 OpenSearch 和 OpenSearch 控制面板(源自 Kibana 7.10 的社区驱动的开源数据可视化和用户界面套件)。用户只需为他们在 AWS 上运行的资源付费,搜索和可视化软件不收取额外费用。
作为一项完全托管的服务,AWS OpenSearch 旨在易于设置和管理。这使公司能够大规模部署、保护和运行 OpenSearch。用户只需在 AWS 管理控制台中单击几下即可设置和配置其 OpenSearch 集群,AWS 可以处理修补、升级和备份等任务。
AWS OpenSearch 还免费提供安全功能,包括加密、用户身份验证和访问控制以及审计日志记录。它提供自动快照、高可用性和易于扩展,使其能够处理大量数据。
这是关于 ELK Stack 的系列文章的一部分。
OpenSearch 背后的戏剧性:Elastic 和 AWS 之间的紧张关系
Elasticsearch 于 2010 年在 Apache 2.0 许可下发布,成为全球首选的企业搜索引擎。它通常与 Logstash 和 Kibana(形成 ELK 堆栈)一起使用,在日志分析应用程序(如监视应用程序、分析安全日志和跟踪用户行为)方面表现出色。认识到其潜力,Amazon 于 2015 年推出了 Amazon Elasticsearch Service (Amazon ES),这是一种托管云服务,允许 AWS 用户部署可扩展的 Elasticsearch 集群并管理云中的数据活动。
然而,Elasticsearch背后的公司Elastic N.V.和亚马逊之间的紧张关系加剧。Elastic N.V. 指控亚马逊侵犯商标权和误导性营销,导致 2019 年提起诉讼。这场争议在 2021 年达到了高潮:今年 1 月,Elastic N.V. 将 Elasticsearch 的许可权转移到服务器端公共许可证 (SSPL) 和 Elastic 许可证,并发布了 7.11 版本。此举旨在防止包括亚马逊在内的公司在没有与 Elastic 合作的情况下提供 Elasticsearch 即服务。
作为回应,亚马逊于 2021 年 4 月分叉了 Elasticsearch 的最后一个开源版本 (7.10.2),启动了一个新的开源项目 OpenSearch。除此之外,亚马逊还推出了Amazon OpenSearch Service,从而绕过了许可变更,并继续为其云客户提供搜索引擎解决方案。
Elasticsearch 与 OpenSearch:主要区别
虽然 Elasticsearch 和 AWS OpenSearch 具有共同的沿袭和核心功能,但它们有一些关键差异,使它们与众不同。
-
数据摄取
Elasticsearch 和 AWS OpenSearch 都提供了强大的数据提取功能,但它们处理此任务的方式不同。Elasticsearch 支持各种数据类型和结构,并在索引之前使用采集节点对文档进行预处理。它还支持批量数据摄取,使其成为大规模数据分析的不错选择。
OpenSearch 专注于易用性以及与其他 AWS 服务的集成。它为数据引入提供了一个托管管道,简化了将数据移动到系统的过程。AWS OpenSearch 还与 AWS Kinesis、AWS Glue 和 AWS Lambda 等服务无缝集成,从而提供完整的数据处理管道。
-
客户端库
Elasticsearch 拥有多种编程语言的广泛客户端库,例如 Java、Python、.NET、PHP、Perl、Ruby 和 JavaScript。这使得开发人员可以轻松地将 Elasticsearch 集成到他们的应用程序中,无论他们使用哪种编程语言。
AWS OpenSearch 有自己的一组客户端库。在撰写本文时,它提供了 Python、Java、JavaScript (Node.js)、Go、Ruby、PHP、.NET 和 Rust 的客户端。此外,OpenSearch 在技术上与 Elasticsearch 客户端兼容,因为它本质上与 Elasticsearch 是同一个平台。但是,Elasticsearch 添加了许可证限制,阻止其客户端连接到 OpenSearch。
-
性能
Elasticsearch 和 AWS OpenSearch 都旨在处理大量数据并提供快速、可靠的搜索结果。它们都使用相同的底层引擎 (Lucene),并提供类似的功能,例如分片、复制和分布式架构,以确保高性能。
但是,OpenSearch 具有作为完全托管服务的一部分的额外优势。这意味着它可以利用 AWS 的全球基础设施来提高性能、可扩展性和可靠性。AWS 提供性能监控工具、自动备份和灾难恢复功能作为 OpenSearch 服务的一部分,有助于确保高性能和数据安全。
-
许可和定价
在许可方面,Elasticsearch 和 OpenSearch 近年来都发生了重大变化。2021 年,Elasticsearch 将其许可证从 Apache 2.0 更改为服务器端公共许可证 (SSPL)。此举在开源社区引发了争议,因为 SSPL 未被开源促进会 (OSI) 认可为开源许可证。作为回应,AWS分叉了Elasticsearch的最后一个Apache许可版本,以创建OpenSearch,该版本仍受Apache 2.0许可。
Elasticsearch 和 OpenSearch 的定价模式是另一个分歧点。由 Elastic 管理的 Elasticsearch 提供分层定价模式。它包括具有基本功能的免费套餐和解锁更高级功能的付费套餐。OpenSearch 作为由 AWS 管理的项目,可在所有级别的功能中免费使用。但是,如果用户选择使用 AWS 服务来托管和管理其 OpenSearch 实例,则会产生费用。
-
支持和文档
Elasticsearch 提供了丰富的文档,涵盖了从基本设置到高级使用场景的所有内容。它还拥有一个庞大而活跃的社区,可以提供支持。Elasticsearch 背后的公司 Elastic 也提供付费支持选项。
OpenSearch 是一个相对较新的项目,其文档仍在增长。也就是说,AWS 已承诺为 OpenSearch 维护全面的文档,并且现有的 Elasticsearch 文档在很大程度上仍然适用。OpenSearch 还受益于广泛的 AWS 社区的支持。与 Elastic 一样,AWS 也为 OpenSearch 提供付费支持选项。
-
安全
Elasticsearch 最初仅在其付费套餐中提供高级安全功能。然而,在许可变更之后,Elastic 宣布这些功能将免费提供。其中包括 SSL 加密、基于角色的访问控制和审核日志记录。
相比之下,OpenSearch 将安全功能作为其核心产品的一部分,只要您选择在 AWS 上运行它。它提供类似于 Elasticsearch 的功能,例如加密、用户身份验证和细粒度访问控制。鉴于其由 AWS 管理,用户还可以从 AWS 云强大的安全性和合规性基础设施中受益。
Elasticsearch 与 OpenSearch:如何选择?
在 Elasticsearch 和 OpenSearch 之间进行选择很大程度上取决于您的具体需求和情况。如果您更喜欢拥有完善社区和大量文档的成熟产品,那么 Elasticsearch 可能是更好的选择。另一方面,如果您重视开源软件的原则并更喜欢免费提供高级功能的工具,那么 OpenSearch 可能更适合。
考虑您的托管环境也很重要。如果您已经在使用 AWS 服务,OpenSearch 可能会提供更流畅的集成和管理。相反,如果您使用其他云提供商或在本地托管搜索引擎,Elasticsearch 可能会提供更大的灵活性。
最后,值得考虑这两个项目的未来方向。Elasticsearch 仍然是企业搜索领域的全球领导者,并在该领域拥有长期的创新记录。亚马逊的OpenSearch,其贡献者社区更加有限,其企业赞助商的关注度也较低,在未来的创新中可能会逐渐落后于Elasticsearch。