成都行业网站/seo优化网站
作者:George Kobar, Ugo Sangiorgi
对于任何依赖快速、准确搜索数据的组织来说,强大、快速且高效的搜索引擎是至关重要的元素。 对于开发人员和架构师来说,选择正确的搜索平台可以极大地影响你的组织提供快速且相关结果的能力。 在我们全面的性能测试中,Elasticsearch 成为明智的选择。 Elasticsearch 比 OpenSearch 快 40%-140%,同时使用更少的计算资源。
在本文中,我们将在六个主要领域对 Elasticsearch 8.7 和 OpenSearch 2.7(测试时两者的最新版本)进行性能比较:文本查询、排序、日期直方图、范围和术语,包括资源利用率。 我们的目标是提供公平、实用的技术见解,帮助你做出明智的决策,无论你是优化现有系统还是设计新系统。 此比较还旨在清楚地突出 Elasticsearch 和 OpenSearch 之间的性能差异,表明两者完全不同。
我们将首先回顾性能比较的结果,然后是我们的测试方法和测试环境。
结果
使用 t-test 对性能比较结果(重点关注请求的 p90(第 90 个百分位数))进行交叉验证,以确保两种解决方案之间的延迟测量存在统计差异。 针对每种查询类型计算相对变化(以百分比表示)。 我们还使用箱线(box plot)图显示 100% 请求的延迟分布,箱线图显示最小值、最大值、中值、平均值和异常值。 实际的方框显示了下四分位数和上四分位数,其中分别有 25% 和 75% 的观测值落在其中。通过这种方式,我们可以了解这些值的实际分布情况。
文本查询 — 速度提高 76%
“Show me all data that has jane@doe.com.”
Elasticsearch 表现出了显着的领先优势,执行文本查询的速度比 OpenSearch 快 76%。
文本查询是全文搜索的基础和关键,而全文搜索是 Elasticsearch 的主要功能。 文本字段查询允许用户搜索文本数据中的特定短语、单个单词甚至单词的一部分。 用户能够通过文本数据执行复杂的搜索 —— 它增强了整体搜索体验并支持广泛的应用程序和解决方案。
排序
"Show me the most expensive products first."
在对简单文本查询结果进行排序时,Elasticsearch 的性能比 OpenSearch 高出惊人的 140%。 此外,Elasticsearch 的时间戳、关键字和数字排序查询的执行时间分别加快了 24%、97% 和 53%。
排序是按特定顺序(例如字母顺序、数字顺序或时间顺序)排列数据的过程。 排序对于基于特定条件的搜索结果非常有用,可确保向客户呈现最相关的结果。 这是增强用户体验并提高搜索过程整体效率的重要功能。
日期直方图
“Show me a bar chart ordered in time for all the data.”
对于日期直方图聚合,Elasticsearch 比 OpenSearch 快 81%,展示了其强大能力。 处理时间的加速有利于根据时间序列数据生成有序条形图。
日期直方图聚合可用于通过将基于时间的数据划分为间隔或存储桶来聚合和分析数据。 此功能使用户能够可视化并更好地了解一段时间内的趋势、模式和异常情况。
范围查询
“Show me just the price of your products between 0-25.”
Elasticsearch 在范围查询方面快了 40%,在范围聚合方面快了 68%。
在测试或关键字字段上搜索范围查询是性能和可扩展性的另一个核心参数。 范围查询对于根据给定字段中的特定值范围过滤搜索结果非常有用。 此功能允许用户缩小搜索结果范围并快速找到更多相关信息。
更快的构面创建至关重要,因为它涉及根据特定属性将数据分类为组(分面),然后在每个组内执行汇总操作。 此过程通过提供电子商务应用程序中经常使用的数据的结构化视图,使分析、过滤和可视化变得更加容易。
术语查询
“Group the data by what products were bought together.”
Elasticsearch 展示了其优越性,与 OpenSearch 相比,术语查询速度快 108%,复合术语聚合速度快 103%。 这些优势使 Elasticsearch 成为涉及数据分组和过滤的任务的更有吸引力的选择。
Elasticsearch 中的 “Significant Terms” 聚合会自动排除常见或不感兴趣的术语,例如停用词(“and”、“the”、“a”)或结果中索引中频繁出现的术语。 这是基于对索引数据中的术语频率和分布的统计分析。
资源利用率
Elasticsearch 不仅在各种与搜索相关的任务中优于 OpenSearch,而且还被证明具有更高的资源效率。 默认情况下,OpenSearch 对数据流使用 best_speed 编解码器(优先考虑查询速度而不是存储效率),而 Elasticsearch 使用 best_compression。 使用默认的开箱即用设置,Elasticsearch 使用的磁盘空间减少了 37%,并且当在两者上使用 best_compression(用于此基准测试的编解码器)时,Elasticsearch 的空间效率仍然提高了 13%。
时间序列数据流 (TSDS)
我们更进一步,将数据重新索引到时间序列数据流中,从而进一步压缩数据 - 平均文档大小从 218 kb 下降到 124 kb,减少了 54.8%,如下表所示。
Average Document Size | Difference from OpenSearch | |
OpenSearch Datastream | 249 kb | - |
Elasticsearch Datastream | 218 kb | 13% |
Elasticsearch TSDS | 124 kb | 54.8% |
第三方验证
我们的性能测试方法和结果已经过 TechTarget 的 Enterprise Strategy Group(一家受人尊敬的第三方供应商)的独立验证。 Tech Target 企业战略组 ESG 的验证增加了我们的调查结果的可信度和公正性,确保测试方法和后续结果保持最高的准确性和完整性标准。 他们的认可重申了我们比较的稳健性和可靠性,使你能够根据我们的基准测试结果做出明智的决定。
测试方法
我们如何得出这些结果
本着公平、精确比较 Elasticsearch 和 OpenSearch 的精神,我们创建了两个等效的 5 节点集群,每个集群配备 32GB 内存、8 个 CPU 核心、每个节点 300GB 磁盘。 对于每个产品,我们提取随机生成的相同 1TB 日志文件,其中包含 22 个字段(更多详细信息如下)。
测试是在单独的 Kubernetes 节点池中完成的,确保每个产品都有专用资源。 我们遵循 Elasticsearch 和 OpenSearch 的最佳实践,包括在发起查询之前强制合并索引以及防止缓存请求影响的策略,从而确保测试结果的完整性。
为了保证 Elasticsearch 和 OpenSearch 比较的透明度,我们将完整的基准测试流程作为开源项目提供。 可在此处访问的存储库包括用于配置 Kubernetes 集群的 Terraform 配置以及用于创建 Elasticsearch 和 OpenSearch 集群的 Kubernetes 清单。 此外,存储库中还提供了基准测试中使用的查询。
你不仅可以测试自己,还可以使用此存储库进行自己的研究并提高 Elasticsearch 项目的性能。
我们测试了什么
我们在 Elasticsearch 和 OpenSearch 之间进行的测试是在关键使用领域进行的,包括:
- 搜索 - 具有典型搜索栏的电子商务用例
- 可观察性 —— 大量系统遥测数据,例如日志、指标和应用程序跟踪
- 安全——安全事件实时分析
即将进行的比较将深入分析每个平台在这些领域的表现,包括文本查询、排序、数据直方图、范围和术语。
数据集和摄取
使用此开源工具生成了 1TB 数据集,然后将其上传到 GCP 存储桶。 Logstash® 用于将 GCP 存储桶中的数据集提取到 Elasticsearch 和 OpenSearch 中。 存储库中还包含生成类似数据集的说明,以防你想要复制基准测试。
各字段组成的所有日志如下表所示。 除 @timestamp 之外,所有事件的值都是随机的,@timestamp 是每个事件连续且唯一的。
Field | Value |
@timestamp | Jan 3, 2023 @ 18:59:58.000 |
agent.id | baac7358-a449-4c36-bf0f-befb211f1d38 |
agent.name | fernswisher |
agent.type | filebeat |
agent.version | 8.8.0 |
aws.cloudwatch.ingestion_time | 2023-05-01T20:49:30.820Z |
aws.cloudwatch.log_group | /var/log/messages |
aws.cloudwatch.log_stream | northcurtain |
cloud.region | ap-southeast-3 |
data_stream.dataset | benchmarks |
data_stream.namespace | day3 |
data_stream.type | logs |
event.dataset | generic |
event.id | gravecrane |
input.type | aws-cloudwatch |
log.file.path | /var/log/messages/northcurtain |
message | 2023-05-01T20:49:30.820Z May 01 20:49:30 ip-106... |
meta.file | 2023-01-03/1682974095-gotext.ndjson.gz |
metrics.size | 408 |
metrics.tmin | 238 |
process.name | systemd |
tags | preserve_original_event |
基准测试
总共考虑了五个关键领域的 35 种查询类型,总计 387,000 个请求。 在 100 个预热查询之后,每个查询类型执行 100 次,每个查询重复该过程 50 次。
Rally 是 Elastic® 开发的开源工具,用于 Elasticsearch 和 Elastic Stack 的其他组件的基准测试和性能测试。 它允许用户针对 Elasticsearch 集群模拟各种类型的工作负载,例如索引和搜索,并以可重现的方式测量其性能。 虽然 Rally 是由 Elastic 开发的,主要是为了对 Elasticsearch 进行基准测试而设计的,但它是一个灵活的工具,可以适应与 OpenSearch 一起使用。
Elastic 每天运行基准测试,以确保 Elasticsearch 中的任何新代码的性能与昨天一样或更好。 我们还使用自己的机器学习来识别性能异常或资源利用效率低下。 我们以透明和公开的方式提供性能和大小测试,以使使用我们产品的每个人受益。 值得注意的是,其他厂商不提供此功能,这可以帮助用户随着时间的推移监控他们感兴趣的变化。
结论:Elasticsearch — 明显的胜利者
考虑到各种测试的结果,很明显 Elasticsearch 始终优于 OpenSearch。 无论是处理简单查询、对数据排序、生成直方图、处理术语或范围查询,甚至是资源优化,Elasticsearch 都处于领先地位。
在选择搜索引擎平台时,企业应优先考虑速度、效率和低资源利用率 —— 这些都是 Elasticsearch 所擅长的属性。 这使得它成为依赖快速准确搜索结果的组织的一个令人信服的选择。 无论你是对搜索结果进行排序的电子商务平台、识别威胁的安全分析师,还是仅仅需要有效观察关键应用程序,Elasticsearch 都在此次比较中成为明显的领导者。
准备好亲自测试 Elasticsearch 了吗?
开始免费试用 Elastic Cloud 14 天,了解 Elasticsearch 性能如何帮助你完成项目。
本文中描述的任何特性或功能的发布和时间安排均由 Elastic 自行决定。 当前不可用的任何特性或功能可能无法按时交付或根本无法交付。
相关文章:

Elasticsearch 与 OpenSearch:揭开性能差距
作者:George Kobar, Ugo Sangiorgi 对于任何依赖快速、准确搜索数据的组织来说,强大、快速且高效的搜索引擎是至关重要的元素。 对于开发人员和架构师来说,选择正确的搜索平台可以极大地影响你的组织提供快速且相关结果的能力。 在我们全面的…...

100个Java工具类之41:系统工具类Apache之SystemUtils
系统工具类Apache之 org.apache.commons.lang3.SystemUtils 根据Apache SystemUtils源码中介绍,SystemUtils是java.lang.System的帮助程序。当因安全限制无法读取系统属性时,则会返回null。下面是为大家整理的几个主要用法。 一、获取主机名 String ho…...

maven Jar包反向install到本地仓库
maven Jar包反向install到本地仓库 需求实现 需求 项目打包时报错,缺少一个jar包。 但是在maven仓库都找不到此jar包,其他人提供了这个jar包。 需要把这个jar包install到本地仓库,使项目能正常打包运行。 实现 使用git bash命令执行以下脚…...

.NET6使用SqlSugar操作数据库
1.//首先引入SqlSugarCore包 2.//新建SqlsugarSetup类 public static class SqlsugarSetup{public static void AddSqlsugarSetup(this IServiceCollection services, IConfiguration configuration,string dbName "ConnectString"){SqlSugarScope sqlSugar new Sq…...

MySQL8是什么-MySQL8知识详解
从今天起,开始更新MySQL8的教程,今天更新MySQL8的第一篇文章,主要讲了MySQL8是什么、MySQL数据库的概念、MySQL的优势和MySQL的发展历史。 1、MySQL8是什么 MySQL 8是一个开源的关系型数据库管理系统。它是MySQL数据库的最新版本,…...

Spring Gateway+Security+OAuth2+RBAC 实现SSO统一认证平台
背景:新项目准备用SSO来整合之前多个项目的登录和权限,同时引入网关来做后续的服务限流之类的操作,所以搭建了下面这个系统雏形。 关键词:Spring Gateway, Spring Security, JWT, OAuth2, Nacos, Redis, Danymic datasource, Jav…...

flutter开发实战-TextPainter计算文本内容的宽度
flutter开发实战-TextPainter计算文本内容的宽度 最近开发过程中根据Text文本的大小判断是否需要进行显示跑马灯效果,获取文本的大小,需要TextPainter来获取Size 一、TextPainter TextPainter主要用于实现文本的绘制。TextPainter类可以将TextSpan渲染…...

竞赛项目 深度学习的动物识别
文章目录 0 前言1 背景2 算法原理2.1 动物识别方法概况2.2 常用的网络模型2.2.1 B-CNN2.2.2 SSD 3 SSD动物目标检测流程4 实现效果5 部分相关代码5.1 数据预处理5.2 构建卷积神经网络5.3 tensorflow计算图可视化5.4 网络模型训练5.5 对猫狗图像进行2分类 6 最后 0 前言 &#…...

MySQL相关的SQL语句、数据库、数据表、字段、类型
文章目录 前言MySQL整数类型MySQL字符串类型MySQL小数类型MySQL时间类型常用的基本SQL语句 前言 1、SQL语句不区分大小写。 MySQL整数类型 序号数据类型数据范围1TINYINT-128~1272SMALLINT-32768~327673MEDIUMINT-223~223-14INT-231~231-15BIGINT-263~263-1 MySQL字符串类型 …...

微信个人小程序申请 (AppID 和 AppSecret)
1. 登录微信公众平台 https://mp.weixin.qq.com/cgi-bin/loginpage?url%2Fcgi-bin%2Fhome%3Ft%3Dhome%2Findex%26lang%3Dzh_CN%26token%3D47421820 2. 右上角立即注册 3. 注册类型选择小程序 4. 账号信息 5. 邮箱激活 6. 小程序发布流程 7. 小程序信息 (前往填写) 8. 获取小程…...

使用zap日志替代xorm日志
xorm提供了自定义日志的接口,它的接口定义如下: // Logger is a logger interface type Logger interface {Debug(v ...interface{})Debugf(format string, v ...interface{})Error(v ...interface{})Errorf(format string, v ...interface{})Info(v ..…...

YOLOv5-7.0实例分割+TensorRT部署
一:介绍 将YOLOv5结合分割任务并进行TensorRT部署,是一项既具有挑战性又令人兴奋的任务。分割(Segmentation)任务要求模型不仅能够检测出目标的存在,还要精确地理解目标的边界和轮廓,为每个像素分配相应的…...

回归决策树模拟sin函数
# -*-coding:utf-8-*- import numpy as np from sklearn import tree import matplotlib.pyplot as pltplt.switch_backend("TkAgg") # 创建了一个随机数生成器对象 rng rngnp.random.RandomState(1) print("rng",rng) #5*rng.rand(80,1)生成一个80行、1列…...

NeRF基础代码解析
embedders 对position和view direction做embedding。 class FreqEmbedder(nn.Module):def __init__(self, in_dim3, multi_res10, use_log_bandsTrue, include_inputTrue):super().__init__()self.in_dim in_dimself.num_freqs multi_resself.max_freq_log2 multi_resself…...

职场新星:Java面试干货让你笑傲求职路(三)
职场新星:Java面试干货让你笑傲求职路 1、token 为什么存放在 redis 中?2、索引的底层原理是什么?3、Spring IOC和AOP的原理4、接口和抽象类有什么共同点和区别?5、为什么要使用线程池?直接new个线程不好吗?…...

获取指定收获地址的信息
目录 1 /// 获取指定收获地址的信息 2 /// 删除指定的收获地址信息 3 /// 取消订单 4 /// 确认订单收货 /// <summary> /// 获取指定收获地址的信息</...

突破笔试:力扣全排列(medium)
1. 题目链接:46. 全排列 2. 题目描述:给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。 示例 1: 输入:nums [1,2,3] 输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[…...

gitlab 503 错误的解决方案
首先使用 sudo gitlab-ctl status 命令查看哪些服务没用启动 sudo gitlab-ctl status 再用 gitlab-rake gitlab:check 命令检查 gitlab。根据发生的错误一步一步纠正。 gitlab-rake gitlab:check 查看日志 tail /var/log/gitlab/gitaly/current删除gitaly.pid rm /var/opt…...

智能离子风棒联网监控静电消除器的主要功能和特点
智能离子风棒联网监控静电消除器是一种集成了智能化和网络化监控功能的设备,用于监测和消除静电现象。它的工作原理是通过产生大量的正负离子,将空气中的静电中和和消除,从而达到防止静电积累和放电的目的。 智能离子风棒联网监控静电消除器的…...

matplotlib 设置legend的位置在轴最上方,长度与图的长度相同
import matplotlib.pyplot as plt import numpy as npx1 np.linspace(0, 10, 50) x2 [6,4,3]ax plt.subplot() ax.plot(x1, label"test1") ax.plot(x2, label"test2") # 设置图例的位置 # 将左下角放置在【0, 1.02】位置处,横为1,…...

Docker-Compose 安装rabbitmq
【编写:docker-compose-rabbitmq.yml】创建数据目录: mkdir -p /opt/rabbitmq/data cd /opt/rabbitmq# 创建 docker-compose-rabbitmq.yml vim docker-compose-rabbitmq.yml 输入: version: "3.1" services:rabbitmq:image: rabbit…...

leetcode357- 2812. 找出最安全路径
这个题比较经典,可以用多个算法来求解,分别给出各个算法的求解方法,主要是分为第一部分的多源BFS求每个位置的距离和第二部分求(0,0)到(n-1,n-1)的最短路径(可以用多种方法求) 目录 多源BFS求最短路径枚举安全系数判断…...

Oracle连接数据库提示 ORA-12638:身份证明检索失败
ORA-12638 是一个 Oracle 数据库的错误代码,它表示身份验证(认证)检索失败。这通常与数据库连接相关,可能由于以下几个原因之一引起: 错误的用户名或密码: 提供的数据库用户名或密码不正确,导致…...

在 Linux 中使用 systemd 注册服务
Systemd 是一种现代的 Linux 系统初始化系统和服务管理器。它旨在管理系统服务的初始化、配置和控制。Systemd 的一个关键特性是它可以管理服务,这些服务是为系统提供特定功能的后台进程。在本指南中,我们将探讨如何使用 systemd 在 Linux 中注册服务。 …...

(03)Unity HTC VRTK 基于 URP 开发记录
1.简介 本篇主要内容为:URP如何与VRTK结合、URP需要注意的地方、VRTK的功能进行阐述。 因项目本身要求要渲染出比较好的画质,所以抛弃了Unity默认渲染管线Built-in,使用URP进行渲染,当然也可以选HDRP,但考虑到后期项目…...

.bit域名调研
.bit域名研究 问题: .bit域名和ENS域名的相同点?不同点?有什么关系? .bit的定义 .bit 是基于区块链的,开源的,跨链去中心化账户系统.bit 提供了以 .bit 为后缀的全局唯一的命名体系,可用于加密…...

Vue数组变更方法和替换方法
一、可以引起UI界面变化 Vue 将被侦听的数组的变更方法进行了包裹,所以它们也将会触发视图更新。这些被包裹过的方法包括: push()pop()shift()unshift()splice()sort()reverse() 以上七个数组都会改变原数组,下面来分别讲解它们的区别&…...

Centos-6.3安装使用MongoDB
安装说明 系统环境:Centos-6.3 安装软件:mongodb-linux-x86_64-2.2.2.tgz 下载地址:http://www.mongodb.org/downloads 安装机器:192.168.15.237 上传位置:/usr/local/ 软件安装位置:/usr/local/mongodb 数…...

Mysql 复杂查询丨联表查询
💗wei_shuo的个人主页 💫wei_shuo的学习社区 🌐Hello World ! JOIN(联表查询) 联表查询(Join)是一种在数据库中使用多个表进行关联查询的操作。它通过使用 JOIN 关键字将多个表连接在…...

C语言进阶第二课-----------指针的进阶----------升级版
作者前言 🎂 ✨✨✨✨✨✨🍧🍧🍧🍧🍧🍧🍧🎂 🎂 作者介绍: 🎂🎂 🎂 🎉🎉🎉…...