简单地说,我们现在是Redis

了解更多

搜索基准测试:reresearch vs. Elasticsearch



回到博客

背景

RediSearch是一个分布式全文搜索和聚合引擎,构建在Redis之上。它使用户能够以极其快速的方式在Redis数据集上执行复杂的搜索查询。reresearch的独特架构是用C语言编写的,并且是基于优化的数据结构从头开始构建的,这使它成为市场上其他搜索引擎的真正替代品。作为一个独立的搜索引擎,对于索引和可搜索数据的检索,它工作得非常好。

当我们第一次启动reresearch时,我们基准测试它来测试Elasticsearch和Solr等流行搜索引擎的功能。这一次,我们决定尝试一个稍微不同的基准测试,以便(a)给你一个清晰的、可重复的设置,所有搜索引擎都经过优化,以提供最佳性能,(b)基于我们从reresearch用户那里看到的,模拟多个现实生活场景。

基准

在这个搜索基准中,我们比较了reresearch和Elasticsearch的两个用例:

  1. 索引和查询维基百科数据集
  2. 多租户环境中的快速索引

维基百科的基准

我们首先从维基百科索引了560万文档(5.3GB),然后对索引的数据集进行了两词搜索查询。

索引的结果

如下图所示,RediSearch构建索引用时221秒,而Elasticsearch用时349秒,比前者快58%。

查询结果

一旦索引了数据集,我们使用32个运行在专用负载生成服务器上的客户机启动了两个单词的搜索查询。从下图中可以看到,与Elasticsearch的3.1K ops/sec相比,RediSearch的吞吐量达到了12.5K ops/secx4更快.此外,reresearch的延迟稍微好一些,平均为8毫秒,而Elasticsearch为10毫秒。

多租户索引基准

在这里,我们模拟了一个多租户电子商务应用程序,其中每个租户表示一个产品类别并维护自己的索引。对于这个基准,我们构建了50K索引(或产品),每个索引最多存储500个文档(或项目),总共包含2500万个文档。reresearch仅用201秒就建立了索引,而平均运行的索引数为125K /秒。然而,Elasticsearch在921个索引之后崩溃了,显然不是设计来应对这种负载的。

指标设置

硬件

云实例类型 个vCPU Mem(直布罗陀海峡) 网络
一个AWS c4.8xlarge:一个用于负载生成器,一个用于搜索引擎 36 60 10吉比特

数据来源

的名字 描述和来源 #文档 大小
wikidump 日期:2019年2月7日 5.6米 5.3 GB

RediSearch配置

的名字 价值
碎片的数量
  • 维基百科基准是5
  • 20用于多租户基准测试
医生表大小 10米

Elasticsearch配置

的名字 价值
碎片的数量 5
JVM设置(Xms和Xmx) 25 gb
index.refresh_interval 1
index.number_of_replicas 0
Indices.queries.cache.size和index.queries.cache.enabled 就像提到的在这里

版本

的名字 价值
RediSearch 3版本
Elasticsearch 版本6.6.0,Lucene版本7.6.0
RediSearchBenchmark 基准测试代码

结论

我们对reresearch和Elasticsearch进行了基准测试,以获取以下用例:

  • 一个简单的维基百科用例——我们发现RediSearch的索引速度快了58%,在索引的数据集上执行两个单词的搜索速度快了x4。
  • 一个更高级的多租户用例——reresearch201秒内创建了50k个索引,而Elasticsearch在创建了921个索引后崩溃了。

Elasticsearch是一个功能丰富的搜索产品,由伟大的人在Elastic.co,但在性能方面,它存在固有的架构缺陷,如下表所示:

组件 RediSearch Elasticsearch
搜索引擎 基于现代和优化的数据结构的专用引擎 基于Lucene引擎
编程语言 基于c的,极其优化 Java
内存技术 本机运行在DRAM和持久内存上 基于磁盘的缓存选项
协议 优化分别地(复述,序列化协议) HTTP

阅读更多关于reresearch的内容在这里技术在它后面。要开始RediSearch -试试我们的复述,云亲在这里或下载Redis企业软件万博体育彩万博电竞客服在这里

附录

根据读者的反馈,我们更新了对维基百科数据集的参考,并添加了基准源代码的链接,以便复制。如果有任何反馈,我们将很高兴得到更多。

Baidu