RediSearch vs. Elasticsearch vs. solr

2024-01-12 13:20

本文主要是介绍RediSearch vs. Elasticsearch vs. solr,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1. RediSearch vs. Elasticsearch

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

当我们第一次推出RediSearch时,我们将其与Elasticsearch和Solr等流行搜索引擎进行了对比,以测试该引擎的强大程度。这一次,我们决定尝试一个稍微不同的基准,以便(a)为您提供一个清晰、可重复的设置,所有搜索引擎都经过优化,以提供最佳性能,并(b)根据我们从RediSearch用户那里看到的情况模拟多种现实生活场景。

基准

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

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

维基百科基准

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

索引结果

如下图所示,RediSearch用221秒建立索引,而Elasticsearch用349秒,速度快58%。
在这里插入图片描述

查询结果

数据集建立索引后,我们使用在专用负载生成器服务器上运行的32个客户端启动了两个单词的搜索查询。如下图所示,RediSearch的吞吐量达到了12.5K ops/sec,而Elasticsearch的吞吐量为3.1K op/sec,或快了x4。此外,RediSearch的延迟略好,平均为8秒,而Elasticsearch的延迟为10秒。

在这里插入图片描述

多租户索引基准

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

基准设置

硬件

数据源

在这里插入图片描述

RediSearch配置

在这里插入图片描述

Elasticsearch配置

在这里插入图片描述

版本
NameValue
RediSearchVersion 1.4.3
ElasticsearchVersion 6.6.0 with Lucene version 7.6.0
RediSearchBenchmarkBenchmark code here

总结

我们为以下用例以RediSearch和Elasticsearch为基准:

  • 一个简单的维基百科用例——我们发现RediSearch在索引方面快了58%,在索引数据集上执行两个单词搜索时快了x4。
  • 一个更先进的多租户用例——RediSearch在201秒内创建了5万个索引,而Elasticsearch在创建了921个索引后崩溃。

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

ComponentRediSearchElasticsearch
搜索引擎基于现代优化数据结构的专用引擎基于Lucene引擎
编程语言基于C语言,被极致优化过了Java
存储技术在DRAM和持久内存上本地运行基于磁盘并带有缓存选项
协议优化的RESP(REdis串行化协议)HTTP

2. Elasticsearch vs. solr

概述

在我们开始比较Elasticsearch和Solr之前,让我们简单定义一下它们是什么。
Elasticsearch是一个基于Apache Lucene的开源RESTful搜索引擎。它旨在处理大量数据,并提供近乎实时的搜索和分析功能。
Solr也是一个开源搜索平台,它也是建立在Lucene之上的。它旨在提供高速文本搜索、可扩展和容错的分布式搜索以及分面搜索功能。
既然我们知道了基本原理,让我们来比较一下这两者。

性能

在选择搜索平台时,最重要的考虑因素之一是性能。Elasticsearch和Solr都提供高速搜索和分析,但Elasticsearch无疑在几乎所有基准比较中都更快。事实上,在某些用例中,Elasticsearch比Solr快50%。Elasticsearch的高级缓存和巧妙的内存使用使其比Solr更具优势。

稳定性

Elasticsearch和Solr都是可扩展的,可以处理大量数据,但Elasticsearch的构建考虑到了可扩展性。Elasticsearch使用开箱即用的分布式架构,这意味着您可以通过添加更多节点来轻松地横向扩展集群。另一方面,Solr需要一些额外的配置来扩展。从这个意义上说,在可伸缩性方面,Elasticsearch显然是赢家。

搜索能力

Elasticsearch和Solr都擅长搜索,但它们对搜索的处理方式不同。Elasticsearch的搜索引擎是为结构化和非结构化搜索而构建的,而Solr更专注于文本搜索。Elasticsearch的DSL(领域特定语言)允许更复杂的查询生成器,而Solr的查询语法可能提供的灵活性较小。Elasticsearch还为搜索大型数据集提供了更好的聚合支持。

易用性

最后,易用性是一个重要的考虑因素。如果你习惯于使用Lucene,Solr将是两者中更容易学习的一个。另一方面,与Solr相比,Elasticsearch的学习曲线更陡。Elasticsearch拥有更全面的API。

结论

那么,你应该选择哪一个呢?和大多数事情一样,这取决于你的具体需求。如果你需要闪电般的搜索、可扩展性,并且有学习新技术的诀窍,Elasticsearch可能是一个更好的选择。如果您对文本搜索更感兴趣,并且已经熟悉Lucene,Solr可能是更好的选择。

参考1
参考2

这篇关于RediSearch vs. Elasticsearch vs. solr的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/597998

相关文章

基于MySQL Binlog的Elasticsearch数据同步实践

一、为什么要做 随着马蜂窝的逐渐发展,我们的业务数据越来越多,单纯使用 MySQL 已经不能满足我们的数据查询需求,例如对于商品、订单等数据的多维度检索。 使用 Elasticsearch 存储业务数据可以很好的解决我们业务中的搜索需求。而数据进行异构存储后,随之而来的就是数据同步的问题。 二、现有方法及问题 对于数据同步,我们目前的解决方案是建立数据中间表。把需要检索的业务数据,统一放到一张M

Android平台播放RTSP流的几种方案探究(VLC VS ExoPlayer VS SmartPlayer)

技术背景 好多开发者需要遴选Android平台RTSP直播播放器的时候,不知道如何选的好,本文针对常用的方案,做个大概的说明: 1. 使用VLC for Android VLC Media Player(VLC多媒体播放器),最初命名为VideoLAN客户端,是VideoLAN品牌产品,是VideoLAN计划的多媒体播放器。它支持众多音频与视频解码器及文件格式,并支持DVD影音光盘,VCD影

Solr 使用Facet分组过程中与分词的矛盾解决办法

对于一般查询而言  ,  分词和存储都是必要的  .  比如  CPU  类型  ”Intel  酷睿  2  双核  P7570”,  拆分成  ”Intel”,”  酷睿  ”,”P7570”  这样一些关键字并分别索引  ,  可能提供更好的搜索体验  .  但是如果将  CPU  作为 Facet  字段  ,  最好不进行分词  .  这样就造成了矛盾  ,  解决方法

Solr部署如何启动

Solr部署如何启动 Posted on 一月 10, 2013 in:  Solr入门 | 评论关闭 我刚接触solr,我要怎么启动,这是群里的朋友问得比较多的问题, solr最新版本下载地址: http://www.apache.org/dyn/closer.cgi/lucene/solr/ 1、准备环境 建立一个solr目录,把solr压缩包example目录下的内容复制

ElasticSearch的DSL查询⑤(ES数据聚合、DSL语法数据聚合、RestClient数据聚合)

目录 一、数据聚合 1.1 DSL实现聚合 1.1.1 Bucket聚合  1.1.2 带条件聚合 1.1.3 Metric聚合 1.1.4 总结 2.1 RestClient实现聚合 2.1.1 Bucket聚合 2.1.2 带条件聚合 2.2.3 Metric聚合 一、数据聚合 聚合(aggregations)可以让我们极其方便的实现对数据的统计、分析、运算。例如:

VS Code 调试go程序的相关配置说明

用 VS code 调试Go程序需要在.vscode/launch.json文件中增加如下配置:  // launch.json{// Use IntelliSense to learn about possible attributes.// Hover to view descriptions of existing attributes.// For more information,

【docker】基于docker-compose 安装elasticsearch + kibana + ik分词器(8.10.4版本)

记录下,使用 docker-compose 安装 Elasticsearch 和 Kibana,并配置 IK 分词器,你可以按照以下步骤进行。此过程适用于 Elasticsearch 和 Kibana 8.10.4 版本。 安装 首先,在你的工作目录下创建一个 docker-compose.yml 文件,用于配置 Elasticsearch 和 Kibana 的服务。 version:

ElasticSearch底层原理简析

1.ElasticSearch简述 ElastiaSearch(以下简称ES)是一个基于Lucene的搜索服务器,它提供了一个分布式多用户能力的全文搜索引擎,支持RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。ES设计用于云计算中,能够进行实时搜索,支持PB级搜索,具有稳定,可靠,快速,安装使用方便等

ElasticSearch 6.1.1 通过Head插件,新建索引,添加文档,及其查询数据

ElasticSearch 6.1.1 通过Head插件,新建索引,添加文档,及其查询; 一、首先启动相关服务: 二、新建一个film索引: 三、建立映射: 1、通过Head插件: POST http://192.168.1.111:9200/film/_mapping/dongzuo/ {"properties": {"title": {"type":

ElasticSearch 6.1.1运用代码添加索引及其添加,修改,删除文档

1、新建一个MAVEN项目:ElasticSearchTest 2、修改pom.xml文件内容: <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.or