Elasticsearch 与 OpenSearch:6 个主要区别以及如何选择

什么是 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 具有共同的沿袭和核心功能,但它们有一些关键差异,使它们与众不同。

  1. 数据摄取

    Elasticsearch 和 AWS OpenSearch 都提供了强大的数据提取功能,但它们处理此任务的方式不同。Elasticsearch 支持各种数据类型和结构,并在索引之前使用采集节点对文档进行预处理。它还支持批量数据摄取,使其成为大规模数据分析的不错选择。

    OpenSearch 专注于易用性以及与其他 AWS 服务的集成。它为数据引入提供了一个托管管道,简化了将数据移动到系统的过程。AWS OpenSearch 还与 AWS Kinesis、AWS Glue 和 AWS Lambda 等服务无缝集成,从而提供完整的数据处理管道。

  2. 客户端库

    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。

  3. 性能

    Elasticsearch 和 AWS OpenSearch 都旨在处理大量数据并提供快速、可靠的搜索结果。它们都使用相同的底层引擎 (Lucene),并提供类似的功能,例如分片、复制和分布式架构,以确保高性能。

    但是,OpenSearch 具有作为完全托管服务的一部分的额外优势。这意味着它可以利用 AWS 的全球基础设施来提高性能、可扩展性和可靠性。AWS 提供性能监控工具、自动备份和灾难恢复功能作为 OpenSearch 服务的一部分,有助于确保高性能和数据安全。

  4. 许可和定价

    在许可方面,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 实例,则会产生费用。

  5. 支持和文档

    Elasticsearch 提供了丰富的文档,涵盖了从基本设置到高级使用场景的所有内容。它还拥有一个庞大而活跃的社区,可以提供支持。Elasticsearch 背后的公司 Elastic 也提供付费支持选项。

    OpenSearch 是一个相对较新的项目,其文档仍在增长。也就是说,AWS 已承诺为 OpenSearch 维护全面的文档,并且现有的 Elasticsearch 文档在很大程度上仍然适用。OpenSearch 还受益于广泛的 AWS 社区的支持。与 Elastic 一样,AWS 也为 OpenSearch 提供付费支持选项。

  6. 安全

    Elasticsearch 最初仅在其付费套餐中提供高级安全功能。然而,在许可变更之后,Elastic 宣布这些功能将免费提供。其中包括 SSL 加密、基于角色的访问控制和审核日志记录。

    相比之下,OpenSearch 将安全功能作为其核心产品的一部分,只要您选择在 AWS 上运行它。它提供类似于 Elasticsearch 的功能,例如加密、用户身份验证和细粒度访问控制。鉴于其由 AWS 管理,用户还可以从 AWS 云强大的安全性和合规性基础设施中受益。

Elasticsearch 与 OpenSearch:如何选择?

在 Elasticsearch 和 OpenSearch 之间进行选择很大程度上取决于您的具体需求和情况。如果您更喜欢拥有完善社区和大量文档的成熟产品,那么 Elasticsearch 可能是更好的选择。另一方面,如果您重视开源软件的原则并更喜欢免费提供高级功能的工具,那么 OpenSearch 可能更适合。

考虑您的托管环境也很重要。如果您已经在使用 AWS 服务,OpenSearch 可能会提供更流畅的集成和管理。相反,如果您使用其他云提供商或在本地托管搜索引擎,Elasticsearch 可能会提供更大的灵活性。

最后,值得考虑这两个项目的未来方向。Elasticsearch 仍然是企业搜索领域的全球领导者,并在该领域拥有长期的创新记录。亚马逊的OpenSearch,其贡献者社区更加有限,其企业赞助商的关注度也较低,在未来的创新中可能会逐渐落后于Elasticsearch。

相关推荐
PGCCC19 分钟前
【PGCCC】postgresql 缓存池并发设计
数据库·缓存·postgresql
小爬虫程序猿26 分钟前
如何利用Python解析API返回的数据结构?
数据结构·数据库·python
wowocpp1 小时前
查看 磁盘文件系统格式 linux ubuntu blkid ext4
linux·数据库·ubuntu
Ai 编码助手7 小时前
MySQL中distinct与group by之间的性能进行比较
数据库·mysql
陈燚_重生之又为程序员7 小时前
基于梧桐数据库的实时数据分析解决方案
数据库·数据挖掘·数据分析
caridle7 小时前
教程:使用 InterBase Express 访问数据库(五):TIBTransaction
java·数据库·express
白云如幻7 小时前
MySQL排序查询
数据库·mysql
萧鼎7 小时前
Python并发编程库:Asyncio的异步编程实战
开发语言·数据库·python·异步
^velpro^7 小时前
数据库连接池的创建
java·开发语言·数据库
荒川之神7 小时前
ORACLE _11G_R2_ASM 常用命令
数据库·oracle