百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术教程 > 正文

Es Cluster 和 Solr Cloud 对比测试

suiw9 2024-10-31 16:06 23 浏览 0 评论

测试人:大快技术部——房宗启

一、集群环境

软件版本:

(1)本次测试使用最新的版本,Elasticsearch 5.2.1和Solr 6.4.1(截止2017-02-23)。

(2)JDK: jdk-8u111-linux-x64

(3)Zookeeper:zookeeper-3.4.9

(4)分词器elasticsearch-analysis-ik-5.2.0

(5)kibana-5.2.0-linux-x86_64

集群环境: 由3台服务器构成的集群,具体配置为:

Cent OS 6.5操作系统,8核Intel Xeon E5520处理器,32GB内存,2T机械硬盘。

代码运行环境: 为Thinkpad x201笔记本,具体配置为:

Win7操作系统,2核4线程 Intel Core I5处理器,8GB DDR3内存,128GB固态硬盘。

二、Es和 Solr集群的安装配置

本次测试中的Es和Solr安装模式均为实际生产模式,即Es Cluster和Solr Cloud。集群的配置均使用默认配置,其中,ES使用5个Shard,1个Replica, Solr使用3个Shard,3个Replica。

为Solr安装Zookeeper集群,为Es安装IK分词器和Kibana,均使用默认配置。其中,Ik Analyzer使用 ik_smart。

三、测试数据生成策略

测试数据:

数据为模拟的blog数据,包括id, title, content, posttime四个字段。随机摘用网络上的几篇中文和英文的文章作为模拟语料库Source。用于生成title、content和查询关键词。

(1)通过空格split数据源Source,得到words数组;

(2)通过回车换行来split数据源Source,得到contents数组;

(3)索引的数据包括四个字段:id,title,content,posttime,生成策略如下:

id: int,for循环时赋值为i,在solr中,索引时的id即为该id,而es中的id由es自生成。

title: String,从words数组随机选择20个词拼接成title;

content: String,从contents数组随机选取一个作为content;

posttime: datetime,默认使用系统当前时间new Date();

索引:

Es中的索引设置为blog,类型为article,id由其自动生成,分别进行了单文档索引和批量索引测试。solr使用的collection名为core1。

提前生成需要进行索引的数据(json)格式,当生成的测试数据量较大时,为避免out of memory Exception,使用分块策略,如:索引500万数据时,每次生成并索引1万数据,循环500次;或:每次生成并索引10万数据,循环50次。

查询:

从words中随机选取1到2个词作为查询关键词,用于Es的关键词或全文检索,Solr则是全文检索。轮流生成title和content的查询条件。由于查询时间每次不固定,因此,本测试采用的是固定关键词,运行多次求平均时间和采用变化关键词,运行多次求平均值的方式来计算Es和Solr的查询时间。

时间统计:

Solr 提供索引和查询耗时的接口,索引或查询结束后可直接从response中得到。

ES 提供获得查询时间的接口,但未找到获得索引时间的接口,因此,测试中使用,使用Calendar.getInstance().getTimeInMillis();进行计时。

四、测试数据

ES和Solr的 索引性能 对比:

索引一条数据耗费的时间越短,或单位时间内索引的数据越多,搜索引擎索引性能越优。

项目引擎数据量时间(ms)ms/docdoc/ms
单个索引Es Cluster3w2462208.210.12
单个索引Solr Cloud1w58779558.780.02
批量索引Es Cluster330w4396490.137.51
批量索引Solr Cloud352w4983030.147.06

观察上表可得,Es在单个索引的时候,索引一个文档用时8.21ms,而Solr是55.04毫秒。

批量索引的时候,二者的索引速度相当,但Es略优于Solr。

Es和Solr的 查询性能 对比:

当搜索引擎中的基础数据量越多,平均查询时间越短时,搜索引擎的查询性能越优,其中:

关键字查询:是使用固定的1个字,查询n次,获得总查询时间,然后求平均查询时间。

关键词匹配:是使用固定的一个词,查询n次,获得总查询时间,然后求平均查询时间。

混合查询:是从语料库中随机选取一句话,长度为1到多个字或词。查询n次,获得总查询时间,然后求平均查询时间。

项目引擎基础数据量查询次数时间(ms)ms/
关键字查询Es Cluster700w9w5416356.02
关键字查询Solr Cloud700w2w35403217.70





关键词匹配Es Cluster700w2w38843319.42
关键词匹配Solr Cloud700w2w40849120.42





混合查询Es Cluster700w1w26017626.02
混合查询Solr Cloud700w3k651021217+

另外,使用 kibana 和 Solr admin 进行长句查询,发现,当使用较长的句子,进行查询时:Es和Solr的查询时间范围为:

Es Cluster700w30+~100+毫秒左右,查询时间差在10毫秒以内
Solr Cloud700w4000+~5000+毫秒左右,查询时间差在1百~5百毫秒之间不等。

例如:查询句子:“加强大数据环境下的网络安全问题研究”,Es用时稳定在5毫秒左右,Solr用时在3000毫秒~4600毫秒之间,当重复查询该句子时,Solr查询时间将缩短到20毫秒以内,但查询性能不稳定,仍然会跳跃到60~300毫秒以上。

五、小结

通过分析以上Es和Solr的索引和查询数据可以发现:

(1)单个索引时,Es的速度是Solr的6倍。

(2)批量索引时,二者相差无几,但单位时间里,Es比 Solr多索引0.5条数据。

(3)关键字查询,Es查询速度是Solr的3倍。

(4)关键词查询,二者查询速度相差无几,但Es仍比Solr快1毫秒。

(5)混合查询时,Es的查询速度至少是Solr的8倍。

(6)长句查询,Es查询速度是Solr的50~600倍左右。

综上,在当前测试环境下进行的简单测试,可以发现:Es的索引和查询性能均优于Solr。

相关推荐

俄罗斯的 HTTPS 也要被废了?(俄罗斯网站关闭)

发布该推文的ScottHelme是一名黑客,SecurityHeaders和ReportUri的创始人、Pluralsight作者、BBC常驻黑客。他表示,CAs现在似乎正在停止为俄罗斯域名颁发...

如何强制所有流量使用 HTTPS一网上用户

如何强制所有流量使用HTTPS一网上用户使用.htaccess强制流量到https的最常见方法可能是使用.htaccess重定向请求。.htaccess是一个简单的文本文件,简称为“.h...

https和http的区别(https和http有何区别)

“HTTPS和HTTP都是数据传输的应用层协议,区别在于HTTPS比HTTP安全”。区别在哪里,我们接着往下看:...

快码住!带你十分钟搞懂HTTP与HTTPS协议及请求的区别

什么是协议?网络协议是计算机之间为了实现网络通信从而达成的一种“约定”或“规则”,正是因为这个“规则”的存在,不同厂商的生产设备、及不同操作系统组成的计算机之间,才可以实现通信。简单来说,计算机与网络...

简述HTTPS工作原理(简述https原理,以及与http的区别)

https是在http协议的基础上加了一层SSL(由网景公司开发),加密由ssl实现,它的目的是为用户提供对网站服务器的身份认证(需要CA),以至于保护交换数据的隐私和完整性,原理如图示。1、客户端发...

21、HTTPS 有几次握手和挥手?HTTPS 的原理什么是(高薪 常问)

HTTPS是3次握手和4次挥手,和HTTP是一样的。HTTPS的原理...

一次安全可靠的通信——HTTPS原理

为什么HTTPS协议就比HTTP安全呢?一次安全可靠的通信应该包含什么东西呢,这篇文章我会尝试讲清楚这些细节。Alice与Bob的通信...

为什么有的网站没有使用https(为什么有的网站点不开)

有的网站没有使用HTTPS的原因可能涉及多个方面,以下是.com、.top域名的一些见解:服务器性能限制:HTTPS使用公钥加密和私钥解密技术,这要求服务器具备足够的计算能力来处理加解密操作。如果服务...

HTTPS是什么?加密原理和证书。SSL/TLS握手过程

秘钥的产生过程非对称加密...

图解HTTPS「转」(图解http 完整版 彩色版 pdf)

我们都知道HTTPS能够加密信息,以免敏感信息被第三方获取。所以很多银行网站或电子邮箱等等安全级别较高的服务都会采用HTTPS协议。...

HTTP 和 HTTPS 有何不同?一文带你全面了解

随着互联网时代的高速发展,Web服务器和客户端之间的安全通信需求也越来越高。HTTP和HTTPS是两种广泛使用的Web通信协议。本文将介绍HTTP和HTTPS的区别,并探讨为什么HTTPS已成为We...

HTTP与HTTPS的区别,详细介绍(http与https有什么区别)

HTTP与HTTPS介绍超文本传输协议HTTP协议被用于在Web浏览器和网站服务器之间传递信息,HTTP协议以明文方式发送内容,不提供任何方式的数据加密,如果攻击者截取了Web浏览器和网站服务器之间的...

一文让你轻松掌握 HTTPS(https详解)

一文让你轻松掌握HTTPS原文作者:UC国际研发泽原写在最前:欢迎你来到“UC国际技术”公众号,我们将为大家提供与客户端、服务端、算法、测试、数据、前端等相关的高质量技术文章,不限于原创与翻译。...

如何在Spring Boot应用程序上启用HTTPS?

HTTPS是HTTP的安全版本,旨在提供传输层安全性(TLS)[安全套接字层(SSL)的后继产品],这是地址栏中的挂锁图标,用于在Web服务器和浏览器之间建立加密连接。HTTPS加密每个数据包以安全方...

一文彻底搞明白Http以及Https(http0)

早期以信息发布为主的Web1.0时代,HTTP已可以满足绝大部分需要。证书费用、服务器的计算资源都比较昂贵,作为HTTP安全扩展的HTTPS,通常只应用在登录、交易等少数环境中。但随着越来越多的重要...

取消回复欢迎 发表评论: