ElasticSearch 与 OpenSearch:拉开性能差距

Elasticsearch 与 OpenSearch:扩大性能差距

对于任何依赖快速、准确搜索数据的组织来说,强大、快速且高效的搜索引擎是至关重要的元素。对于开发人员和架构师来说,选择正确的搜索平台可以极大地影响您的组织提供快速且相关结果的能力。在我们全面的性能测试中,Elasticsearch® 成为明智的选择。 Elasticsearch 比 OpenSearch 快 40%--140%,同时使用更少的计算资源。 image1

在本文中,我们将在六个主要领域对 Elasticsearch 8.7 和 OpenSearch 2.7(测试时两者的最新版本)进行性能比较:文本查询、排序、日期直方图、范围和术语,包括资源利用率。我们的目标是提供公平、实用的技术见解,帮助您做出明智的决策,无论您是优化现有系统还是设计新系统。此比较还旨在清楚地突出 Elasticsearch 和 OpenSearch 之间的性能差异,表明两者完全不同。

我们将首先回顾性能比较的结果,然后是我们的测试方法和测试环境。

1. 结果

使用 t-test 检验对性能比较结果(重点关注请求的 p90(第 90 个百分位数))进行交叉验证,以确保两种解决方案之间的延迟测量存在统计差异。针对每种查询类型计算相对变化(以百分比表示)。我们还使用箱线图显示 100% 请求的延迟分布,箱线图显示最小值、最大值、中值、平均值和异常值。实际的方框显示了下四分位数和上四分位数,其中分别有 25% 和 75% 的观测值落在其中。通过这种方式,我们可以了解这些值的实际分布情况。

image2
image2

1.1 文本查询 --- 速度提高 76%

"显示包含 jane@doe.com 的所有数据。"

image3
image3

Elasticsearch 表现出了显着的领先优势,执行文本查询的速度比 OpenSearch 快 76% 。

文本查询是全文搜索的基础和关键,而全文搜索是 Elasticsearch 的主要功能。文本字段查询允许用户搜索文本数据中的特定短语、单个单词甚至单词的一部分。用户能够通过文本数据执行复杂的搜索------它增强了整体搜索体验并支持广泛的应用程序和解决方案。

1.2 排序

"先给我看看最贵的产品。"

image4
image4

在对简单文本查询结果进行排序时,Elasticsearch 的性能比 OpenSearch 高出惊人的 140%。此外,Elasticsearch 的时间戳、关键字和数字排序查询的执行时间分别加快了 24%、97% 和 53%。

排序是按特定顺序(例如字母顺序、数字顺序或时间顺序)排列数据的过程。排序对于基于特定条件的搜索结果非常有用,可确保向客户呈现最相关的结果。这是增强用户体验并提高搜索过程整体效率的重要功能。

1.3 日期直方图

"向我显示所有数据的及时排序的条形图。"

image5
image5

对于日期直方图聚合,Elasticsearch 比 OpenSearch 快 81%,展示了其强大能力。处理时间的加速有利于根据时间序列数据生成有序条形图。

日期直方图聚合可用于通过将基于时间的数据划分为间隔或存储桶来聚合和分析数据。此功能使用户能够可视化并更好地了解一段时间内的趋势、模式和异常情况。

1.4 范围

"仅显示 0 至 25 之间的产品价格。"

image6
image6

Elasticsearch 在范围查询方面快了 40%,在范围聚合方面快了 68%。

在测试或关键字字段上搜索范围查询是性能和可扩展性的另一个核心参数。范围查询对于根据给定字段中的特定值范围过滤搜索结果非常有用。此功能允许用户缩小搜索结果范围并快速找到更多相关信息。

更快的构面创建至关重要,因为它涉及根据特定属性将数据分类为组(构面),然后在每个组内执行汇总操作。此过程通过提供电子商务应用程序中经常使用的数据的结构化视图,使分析、过滤和可视化变得更加容易。

1.5 术语

"根据一起购买的产品对数据进行分组。"

image7
image7

Elasticsearch 展示了其优越性,与 OpenSearch 相比,术语查询速度快 108%,复合术语聚合速度快 103%。这些优势使 Elasticsearch 成为涉及数据分组和过滤的任务的更有吸引力的选择。

Elasticsearch 中的"重要术语"聚合会自动排除常见或不感兴趣的术语,例如停用词("and"、"the"、"a")或结果中索引中频繁出现的术语。这是基于对索引数据中的术语频率和分布的统计分析。

1.6 资源利用率

Elasticsearch 不仅在各种与搜索相关的任务中表现优于 OpenSearch,而且还被证明具有更高的资源效率。默认情况下,OpenSearch 对数据流使用 best_speed 编解码器(优先考虑查询速度而不是存储效率),而 Elasticsearch 使用 _best_compression_。使用默认的开箱即用设置,Elasticsearch 使用的磁盘空间减少了 37%,并且当在两者上使用 _best_compression_(用于此基准测试的编解码器)时,Elasticsearch 的空间效率仍然提高了 13%。

1.7 时间序列数据流 (TSDS)

我们更进一步,将数据重新索引到时间序列数据流中,从而进一步压缩数据 - 平均文档大小从 218 kb 下降到 124 kb,减少了 **54.8%**,如下表所示。

image8
image8

点击图片可查看完整电子表格

1.8 第三方验证

我们的性能测试方法和结果已经过 TechTarget 的 Enterprise Strategy Group(一家受人尊敬的第三方供应商)的独立[验证]{.underline}[1]。 Tech Target 企业战略组 ESG 的验证增加了我们的调查结果的可信度和公正性,确保测试方法和后续结果保持最高的准确性和完整性标准。他们的验证重申了我们比较的稳健性和可靠性,使您能够根据我们的基准测试结果做出明智的决定。

2. 测试方法

2.1 我们如何得出这些结果

[本着公平、精确比较]{.underline}[2] Elasticsearch 和 OpenSearch 的精神,我们创建了两个等效的 5 节点集群,每个集群配备 32GB 内存、8 个 CPU 核心、每个节点 300GB 磁盘。对于每个产品,我们提取随机生成的相同 1TB 日志文件,其中包含 22 个字段(更多详细信息如下)。

测试是在单独的 Kubernetes 节点池中完成的,确保每个产品都有专用资源。我们遵循 Elasticsearch 和 OpenSearch 的最佳实践,包括在发起查询之前强制合并索引以及防止缓存请求影响的策略,从而确保测试结果的完整性。

image9
image9

为了保证 Elasticsearch 和 OpenSearch 比较的透明度,我们将完整的基准测试流程作为开源项目提供。可在此处访问的存储库[包括]{.underline}[3]用于配置 Kubernetes 集群的 Terraform 配置以及用于创建 Elasticsearch 和 OpenSearch 集群的 Kubernetes 清单。此外,存储库中还提供了基准测试中使用的查询。

您不仅可以测试自己,还可以使用此存储库进行自己的调查并提高 Elasticsearch 项目的性能。

2.2 我们测试了什么

我们在 Elasticsearch 和 OpenSearch 之间进行的测试是在关键使用领域进行的,包括:

搜索 - 具有典型搜索栏的电子商务用例

可观察性------大量系统遥测数据,例如日志、指标和应用程序跟踪

安全------安全事件实时分析

即将进行的比较将深入分析每个平台在这些领域的表现,包括文本查询、排序、数据直方图、范围和术语。

2.3 数据集和摄取

[使用该开源工具]{.underline}[4]生成了 1TB 数据集,然后将其上传到 GCP 存储桶。 Logstash (®)用于将 GCP 存储桶中的数据集提取到 Elasticsearch 和 OpenSearch 中。存储库中还包含生成类似数据集的说明,以防您想要复制基准测试。

各字段组成的所有日志如下表所示。除@timestamp 之外,所有事件的值都是随机的,@timestamp 是按事件顺序且唯一的。

相关:[我们如何在 Elasticsearch 8.6、8.7 和 8.8 中加速数据摄取]{.underline}[5]

image10
image10

点击图片可查看完整电子表格

3. 基准测试

总共考虑了五个关键领域的 35 种查询类型,总计 387,000 个请求。在 100 个预热查询之后,每个查询类型执行 100 次,每个查询重复该过程 50 次。

[Rally 是 Elastic]{.underline}[6] (®)开发的开源工具,用于 Elasticsearch 和 Elastic Stack 的其他组件的基准测试和性能测试。它允许用户针对 Elasticsearch 集群模拟各种类型的工作负载,例如索引和搜索,并以可重复的方式测量其性能。虽然 Rally 是由 Elastic 开发的,主要是为了对 Elasticsearch 进行基准测试而设计的,但它是一个灵活的工具,可以适应与 OpenSearch 一起使用。

Elastic [每晚运行基准测试]{.underline}[7],以确保 Elasticsearch 中的任何新代码的性能与昨天一样或更好。我们还使用自己的机器学习来识别性能异常或资源利用效率低下。我们以透明和公开的方式提供性能和尺寸测试,以使使用我们产品的每个人受益。值得注意的是,其他人不提供此功能,这可以帮助用户随着时间的推移监控他们感兴趣的变化。

4. 结论:Elasticsearch --- 明显的胜利者

考虑到各种测试的结果,很明显 Elasticsearch 始终优于 OpenSearch。无论是处理简单查询、对数据进行排序、生成直方图、处理术语或范围查询,甚至是资源优化,Elasticsearch 都处于领先地位。

在选择搜索引擎平台时,企业应优先考虑速度、效率和低资源利用率------这些都是 Elasticsearch 所擅长的属性。这使得它成为依赖快速准确搜索结果的组织的一个令人信服的选择。无论您是对搜索结果进行排序的电子商务平台、识别威胁的安全分析师,还是仅仅需要有效观察关键应用程序,Elasticsearch 都在此次比较中成为明显的领导者。

原文链接:https://www.elastic.co/cn/blog/elasticsearch-opensearch-performance-gap

原文作者:George Kobar,[8]Ugo Sangiorgi[9]

发布时间:2023 年 8 月 8 日

参考资料
[1]

[验证]{.underline}: https://www.elastic.co/cn/maximizing-search-application-performance

[2]

[本着公平、精确比较]{.underline}: https://github.com/elastic/elasticsearch-opensearch-benchmark

[3]

[包括]{.underline}: https://github.com/elastic/elasticsearch-opensearch-benchmark

[4]

[使用该开源工具]{.underline}: https://github.com/elastic/elastic-integration-corpus-generator-tool

[5]

[我们如何在 Elasticsearch 8.6、8.7 和 8.8 中加速数据摄取]{.underline}: https://www.elastic.co/cn/blog/data-ingestion-elasticsearch

[6]

[Rally 是 Elastic]{.underline}: https://github.com/elastic/rally

[7]

[每晚运行基准测试]{.underline}: https://elasticsearch-benchmarks.elastic.co/

[8]

George Kobar,: https://www.elastic.co/cn/blog/author/george-kobar

[9]

Ugo Sangiorgi: https://www.elastic.co/cn/blog/author/ugo-sangiorgi

本文由 mdnice 多平台发布

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/9046.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

揭秘抖音快速涨10000粉的方法:巨量千川投流让你轻松快速增粉

抖音已经成为了当今社交平台的热门之一,而如何快速涨粉已经成为了很多人关注的焦点。本文将揭秘一种高效的方式——巨量千川投流,通过官方真实流量和真实粉丝,每天快速涨关注,实现快速增粉1000~10万。 巨量千川投流是一种专业的抖…

必读干货!国内验证签发的SSL证书六大优势

JoySSL官网 注册码230918 国内验证签发的SSL证书,作为网络安全基础设施的重要组成部分,对于维护互联网数据安全、保障用户隐私、提升网站信誉度具有不可小觑的作用。特别是在当前数字化转型加速、数据合规要求日益严格的背景下,选择国内验证签…

路由的基本使用

目录 一、VueRouter介绍 二、VueRouter的使用 三、注意 一、VueRouter介绍 VueRouter是Vue官方的一个路由插件,是一个第三方包。 作用:修改地址栏路径时,切换显示匹配的组件 官网:Vue Router (vuejs.org) 二、VueRouter的使用 注意&am…

Vue 3.3 编译宏 vue3.3新增了一些语法糖和宏,包括泛型组件、defineSlots、defineEmits、defineOptions

Vue 3.3新增了一些语法糖和宏&#xff0c;包括泛型组件、defineSlots、defineEmits、defineOptions defineProps 父组件传参 <template><Child name"my"></Child> </template> <script setup lang"ts"> import Child fro…

Linux学习笔记4---点亮LED灯(汇编裸机)

本系统学习利用的是正点原子的阿尔法mini开发板&#xff0c;本系列的学习笔记也是按照正点原子的教程进行学习&#xff0c;但并不是利用虚拟机进行开发&#xff0c;而是使用Windows下的子系统WSL进行学习。 因为 Cortex-A 芯片一上电 SP 指针还没初始化&#xff0c;C 环境还没准…

【C++】零钱兑换的始端---柠檬水找零

欢迎来CILMY23的博客 本篇主题为 零钱兑换的始端---柠檬水找零 个人主页&#xff1a;CILMY23-CSDN博客 个人专栏系列&#xff1a; Python | C | C语言 | 数据结构与算法 感谢观看&#xff0c;支持的可以给个一键三连&#xff0c;点赞关注收藏。 前言&#xff1a; 柠檬水找…

嘴尚绝卤味:传承经典,缔造美食新风尚

卤味&#xff0c;作为中国传统美食的代表之一&#xff0c;历经千年的传承与发展&#xff0c;早已成为无数食客餐桌上的宠儿。而在这个美食盛行的时代&#xff0c;嘴尚绝卤味凭借其独特的口感和精湛的工艺&#xff0c;成为卤味市场中的佼佼者&#xff0c;引领着卤味文化的新潮流…

图数据库 之 Neo4j 与 AI 大模型的结合绘制知识图谱

引言 随着信息时代的到来&#xff0c;海量的文本数据成为了我们获取知识的重要来源。然而&#xff0c;如何从这些文本数据中提取出有用的信息&#xff0c;并将其以可视化的方式展示出来&#xff0c;一直是一个具有挑战性的问题。近年来&#xff0c;随着人工智能技术的发展&…

MyBatis认识

一、定义 MyBatis是一款优秀的持久层框架&#xff0c;它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO&#xff08;Plain Old Java O…

【热门话题】ElementUI 快速入门指南

&#x1f308;个人主页: 鑫宝Code &#x1f525;热门专栏: 闲话杂谈&#xff5c; 炫酷HTML | JavaScript基础 ​&#x1f4ab;个人格言: "如无必要&#xff0c;勿增实体" 文章目录 ElementUI 快速入门指南环境准备安装 ElementUI创建 Vue 项目安装 ElementUI 基…

SpringBoot之远程调用的三大方式

为什么要使用远程调用&#xff1f; SpringBoot不仅继承了Spring框架原有的优秀特性&#xff0c;而且还通过简化配置来进一步简化了Spring应用的整个搭建和开发过程。在Spring-Boot项目开发中&#xff0c;存在着本模块的代码需要访问外面模块接口&#xff0c;或外部url链接的需求…

Golang 开发实战day13 - Reciver Functions

&#x1f3c6;个人专栏 &#x1f93a; leetcode &#x1f9d7; Leetcode Prime &#x1f3c7; Golang20天教程 &#x1f6b4;‍♂️ Java问题收集园地 &#x1f334; 成长感悟 欢迎大家观看&#xff0c;不执着于追求顶峰&#xff0c;只享受探索过程 Golang 开发实战day13 - 接收…

第42天:WEB攻防-PHP应用MYSQL架构SQL注入跨库查询文件读写权限操作

第四十二天 一、PHP-MYSQL-SQL注入-常规查询 1.PHP-MYSQL-Web组成架构 MySQL(统一管理) ​ root&#xff08;自带默认&#xff09; ​ 网站A testA ​ 网站B testB MySQL(一对一管理) ​ testA用户 ​ 网站A testA ​ testB用户 ​ 网站B testB access无数据库用户 m…

三勾软件 / 三勾点餐系统门店系统,java+springboot+vue3

项目介绍 三勾点餐系统基于javaspringbootelement-plusuniapp打造的面向开发的小程序商城&#xff0c;方便二次开发或直接使用&#xff0c;可发布到多端&#xff0c;包括微信小程序、微信公众号、QQ小程序、支付宝小程序、字节跳动小程序、百度小程序、android端、ios端。 在…

LVS 负载均衡部署 NAT模式

一、环境准备 配置环境&#xff1a; 负载调度器&#xff1a;配置双网卡 内网&#xff1a;172.168.1.11(ens33) 外网卡&#xff1a;12.0.0.1(ens37)二台WEB服务器集群池&#xff1a;172.168.1.12、172.168.1.13 一台NFS共享服务器&#xff1a;172.168.1.14客户端&#xff…

Android的NDK开发中Cmake报缺少对应的x86的so文件

需要实现一个串口操作的命令。 供应商提供了2个so文件。 分别是 armeabi-v7a 和 arm64-v8a 添加到对应的cpp下。 在CMakeLists.txt里添加so文件 # 添加预编译的库 add_library(libxxx SHARED IMPORTED)# 设置库的路径 set_target_properties(libxxx PROPERTIES IMPORTED_…

springboot和html学院教务管理系统

端口号根据你实际运行程序的端口号来 访问地址&#xff1a;localhost:8080 学生 : student1 123456 管理员&#xff1a;admin 123456 老师&#xff1a;2020001 123456 sys_user 表是账号和密码

隔离流量优化网络传输

不要将长流和短突发流(或者大象流和老鼠流)混部在一起&#xff0c;我建议用切片或虚通道将它们在全链路范围彻底隔离&#xff0c;而不仅仅在交换机上配合着大肆宣讲的高端包分类算法配置一些排队调度。 也不必扯泊松到达&#xff0c;帕累托分布&#xff0c;这些概念在论文建模…

Flutter笔记:Widgets Easier组件库(13)- 使用底部弹窗

Flutter笔记 Widgets Easier组件库&#xff08;13&#xff09;使用底部弹窗 - 文章信息 - Author: 李俊才 (jcLee95) Visit me at CSDN: https://jclee95.blog.csdn.netMy WebSite&#xff1a;http://thispage.tech/Email: 291148484163.com. Shenzhen ChinaAddress of this …

使用HashMap实现,对一个字符集进行哈夫曼编码

最终达到的效果: 调用一个类 class HuffmanCodin{.....} 使用类中的静态方法&#xff0c;获取哈夫曼编码&#xff1a; 事前准备——哈夫曼树的节点定义 class Node implements Comparable<Node> {int weight;//权重Node left;Node right;char ch;//关键字&#xff0c…