什么是 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。
发表评论