- 浏览: 176200 次
- 性别:
- 来自: 北京
最新评论
-
di1984HIT:
ElasticSearch 与 Solr 的对比测试 -
di1984HIT:
好恐怖~~~
ElasticSearch 的一次非正常master脱离的调查 -
zqb666kkk:
楼主能否测试 下 solr5.2.1和 ElasticSear ...
ElasticSearch 与 Solr 的对比测试 -
sadgod:
无法创建线程,貌似是虚存空间不足了,32位机器的话,创建不了太 ...
ElasticSearch 与 Solr 的对比测试 -
mengfei86:
好文章啊,顶起
ElasticSearch 与 Solr 的对比测试
本文从两个方面对ElasticSearch和Solr进行对比,从关系型数据库中的导入速度和模糊查询的速度。
单机对比
1. Solr 发布了4.0-alpha,试了一下,发现需要自己修改schema,好处是它自带一个data importer。在自己的计算机上测试了一下,导入的性能大概是:14分钟导入 3092730 条记录,约合 3682条/秒。
2. 3百万条记录的情况下,模糊查询和排序基本都在1秒内返回
3. 刚才的测试,是每个field单独存储,现在修改了一下配置文件,增加了一个copyField,所有的field都拷贝一份到text这个field里面去,导入的性能大概是:19分钟导入了3092730 条记录,约合 2713条/秒
4. 3百万条记录的情况下,针对text的模糊查询基本在1秒内返回,但是针对所有记录的排序,大概要2~3秒
5. 使用 elasticsearch 0.19.8,缺省配置,用单任务导入,导入性能是:20分钟导入了3092730 条记录,约合2577条/秒
6. 3百万条记录的情况下,查询基本上在1秒内返回,但是模糊查询比较慢,第一次要10秒,后来大概要1~3秒。加上排序大概需要5秒,整体排序基本100ms
查询及排序的指令:
{
"query": {
"query_string": {
"query": "*999*"
}
},
"sort": [
{
"TIME_UP": {
"order": "asc"
}
}
]
}
7. Es0.19.8,用两个任务导入,导入性能是:13分钟导入了3092730 条记录,约合3965条/秒
8. Solr全部建好索引后,占用磁盘空间是1.2G,es占用磁盘空间是4G
单机对比2
在一台Intel i7,32G内存的机器上,重新跑这两个的对比。不过有个重大的区别在于,Solr是在这台性能很好的机器上跑,而es的导入进程则是在一台Intel 四核 2.5G,4G内存的机器上跑的,也许会有性能的差异。ES版本0.19.8,Solr版本4.0-ALPHA。
1. Solr的导入性能:3400万条记录,用时62分钟,平均9140条/秒,占用空间12.75G
2. 使用 *999* 这样的模糊查询,3秒以内返回,稍长一点的查询条件 *00100014*,也是2~3秒返回
3. Es的导入性能(设置Xmx为10G):3400万条记录,用时40分钟,平均14167条/秒,占用空间33.26G,客户端采用4个并发。
4. 使用 *999* 这样的模糊查询,9秒返回,稍长一点的查询条件 *00100014*,11.8秒返回
5. 如果不是针对所有字段查询,而是针对某个特定字段,比如 SAM_CODE: *00100014*,那么也是1秒以内返回。
6. 结论:es的查询效率也可以很高,只是我们还不会用。
7. 结论2:es有个设置是把所有字段放一块的那个,缺省是放一起,但是不知道为什么没起到应有的作用。
备注:
1. Solr第一次的那个内存使用的是缺省设置,这次改为10G,结果导入性能反而变差了,400万条记录,用了8分钟,平均8333条/秒,不知道为什么。
2. 改回缺省的内存配置,导入速度仍然慢。
3. 重启Linux,用10G的内存配置,再导入,5030万条记录,用时92分,约9112条/秒,说明导入速度和内存配置没有大差别
4. 在10G配置的情况下,检索速度也差别不大。
5. 为了搞清楚lucene4.0和solr4.0的进步有多大,下载了solr3.6.1,所幸的是4.0的配置文件在3.6.1上也可以用,所以很快就搭起来进行测试,导入性能为:3400万条记录,用时55分钟,约10303条/秒,占用空间13.85G。查询性能:*999*第一次11.6s,*00100014* 27.3s,相比4.0ALPHA的结果(5000万结果当中,*999*第一次2.6s,*00100014*第一次2.5s)来说,慢了很多,与es的性能差不多,因此,也许lucene4.0真的对性能有大幅提升?
集群对比:
采用4台同样配置(Intel i7,32G内存)的Centos 6.3组成的集群,进行对比。
1. 首先是es,很方便的就组成了一个Cluster,等上一个3400万条的Index全部均衡负载之后进行测试,导入到另外一个Index当中。
2. 导入性能:8500万条记录,用时72分钟,约为19676条/秒。在前5千万条记录导入时的速度在2万/条以上,初始的速度在2.2万/条。占用空间78.6G(由于有冗余,实际占用空间为157.2G)
3. 查询性能:
*999*第一次13.5秒,第二次19.5秒,第三次7.4秒,第四次7.1秒,第五次7.1秒
*00100014*第一次17.2秒,第二次16.6秒,第三次17.9秒,第四次16.7秒,第五次17.1秒
SAM_CODE:*999*,0.8s,1.3s,0.02s,0.02s,0.02s
SAM_CODE: *00100014*,0.1s,0.1s,0.02s,0.03s,0.05s
4. Solr4.0-ALPHA,SolrCloud的配置还算简单,启动一个ZooKeeper,然后其他三台机器访问这个地址,就可以组成一个Cloud:
机器1: nohup java -Xms10G -Xmx10G -Xss256k -Djetty.port=8983 -Dsolr.solr.home="./example-DIH/solr/" -Dbootstrap_confdir=./example-DIH/solr/db/conf/ -Dcollection.configName=xabconf3 -DzkRun -DnumShards=4 -jar start.jar &
其他机器:nohup java -Xms10G -Xmx10G -Dsolr.solr.home="./example-DIH/solr/" -DzkHost=192.168.2.11:9983 -jar start.jar &
但是在执行 data import 的时候,频繁出现 OutOfMemoryError: unable to create new native thread。查了很多资料,把Linux的ulimit当中的nproc改成10240,把Xss改成256K,都解决不了问题。暂时没有办法进行。
结论
1. 导入性能,es更强
2. 查询性能,solr 4.0最好,es与solr 3.6持平,可以乐观的认为,等es采用了lucene4之后,性能会有质的提升
3. Es采用SAM_CODE这样的查询性能很好,但是用_all性能就很差,而且差别非常大,因此,个人认为在目前的es情况下,仍然有性能提升的空间,只是现在还没找到方法。
更新:
刚才搜到了Solr的OOM错误,是一个尚未解决的issue: https://issues.apache.org/jira/browse/SOLR-3658
评论
url="***" user="***" password="***" batchSize="-1"/>
在这里把batchSize设置为-1可以解决内存溢出问题。
用bulk指令,多并发就可以提升导入性能了。
继续努力啊!!!!等待解决这个问题的方法。
发表评论
-
Vaadin初探
2013-05-02 11:00 2884以前用过服务端的echo框架,感觉挺好使的,它可以在服务器 ... -
ElasticSearch 的一次非正常master脱离的调查
2012-09-03 10:05 15751一共有4个节点的cluster,其中es4 是mas ... -
恶心的Android 蓝牙
2012-05-10 16:00 10099用Android 开发一个应用,其中想使用蓝牙来做数据交换。 ... -
SmartGwtEE 之 SqlDataSource 的连接池
2012-03-09 17:14 2042有个项目,使用了SmartGwtEE,并且直接采用了Smart ... -
h2 database 的修复
2012-02-06 14:03 2358为了方便,使用 h2 做为嵌入式数据库,没想到随着数据量增加, ... -
commons file upload导致jvm崩溃
2011-08-02 13:39 1968环境: Redhat Advanced Server 4, j ... -
EOS5 之 内存溢出问题的解决
2011-03-02 17:39 2303不知道普元的EOS属于哪个分类,直接放在综合类里面了。 ... -
GAE 的一些限制
2011-01-11 13:06 1316Google Appengine 提供了很方便的平台,也提供了 ... -
SmartGwt 之原生 Desktop(与gxt无关)
2010-12-29 11:36 2728在前几天尝试了一下将 extjs的gwt封装即gxt的desk ... -
SmartGwt 之 gxt desktop集成
2010-12-27 09:05 3004很是羡慕 gxt 里面的 desktop,恨 smartgwt ... -
SmartGWT 之 redraw 的烦恼
2010-11-21 15:25 2215用SmartGWT的 TileGrid 来展 ... -
GAE 之 web.xml 解析错误
2010-11-16 10:32 2149关于 Google Appengine 方面的文章不知道放在哪 ... -
SmartGWT 之 TreeGrid 的拖拽排序
2010-10-29 16:11 2399使用 ListGrid,当需要排序时,当然可以用上移下移这样的 ... -
SmartGWT 之 TreeGrid 缩进与ie8
2010-10-15 15:05 2152以前用 SmartGWT 的 TreeGrid 没有一点问题。 ... -
GWT 之 jsni及利用其它Ajax代码
2010-07-16 08:37 1796有个框架,本身已经提供了一些 Ajax 访问的代码。如果要自己 ... -
SmartGWT 之 逻辑删除以及展示
2010-05-25 10:07 2114逻辑删除而不是物理删除,是很常见的需求。我这里是因为要用到 s ... -
三天不学习,赶不上比安奇 之 Hibernate onPreUpdate
2010-05-24 10:14 1634还是Hibernate,用了以前的代码,在实体 update ... -
Funambol 之 自定义 SyncSource
2010-05-05 18:32 2109接着昨天的事情,继续往下走。 昨天已经成功的把数据源都 ... -
Funambol 之 jetty 与 gwt 集成
2010-05-04 20:01 2133目标:想把 Funambol 8.5 集成到 gwt 里面来, ... -
Eclipse 之 8年没解决的ITreeContentProvider 问题
2010-04-26 09:26 1837使用eclipse 做一个rcp应用,其中要用到一棵树。于是自 ...
相关推荐
ES(ElasticSearch)和Solr都是基于Lucene的搜索引擎,它们各自提供了一套搜索框架,用于实现高效的全文搜索功能。由于两者都是在Apache License 2下开源的,因此在选择使用哪种搜索方案时,需要根据不同的使用场景...
在进行搜索引擎选择时,对比Elasticsearch与Solr可以帮助我们更好地了解它们各自的特点和适用场景。 首先,Elasticsearch是一个高度可扩展的开源全文搜索引擎,它旨在快速、可靠地从任何结构化或非结构化数据中提供...
- **Elasticsearch vs Solr**: ES自带分布式协调,支持实时搜索,而Solr需借助Zookeeper进行分布式管理,更适合传统搜索应用。 - **Elasticsearch vs MySQL**: ES在全文检索方面更强大,MySQL的全文检索功能相比之下...
本文将对Elasticsearch的安装过程进行总结,包括下载、安装插件、启动、接口测试、可视化页面的使用以及与其他搜索引擎和数据库的对比。 ### 一、下载Elasticsearch 首先,你需要从官方网站下载适合你操作系统的...
**1.2 ElasticSearch 与 Solr 的对比** ElasticSearch 和 Solr 都是非常流行的搜索引擎工具,但它们之间存在一些显著的区别: - **分布式管理**: Solr 依赖于Zookeeper进行分布式管理,而ElasticSearch自身具备...
\n- **搜索引擎**:Elasticsearch、Solr用于以搜索为主的业务。\n- **缓存**:Redis Cluster用于高性能的数据缓存需求。\n\n**避免的坑与最佳实践**\n\n1. **稳定性优先**:选择成熟、经过市场验证的分布式数据库...
这通常涉及到数据库技术,如使用Elasticsearch或Solr建立全文搜索引擎。 9. **PDF文档**:考虑到文档的兼容性和安全性,扫描后的图像可能需要转换为PDF格式,尤其是PDF/A标准,这是一种长期保存的电子文档格式,...
- Elasticsearch 2.0.2, 2.1.2, 2.2.2, 2.3.1 - Apache Geode (incubating) 1.0.0-incubating.M1 - Apache HBase 1.0.0 (CDH5.5.2) - MongoDB 1.8.5 (asynchronous only), 2.0.9, 2.2.7, 2.4.14, 2.6.12, 3.0.11, ...
4. 搜索引擎技术:如Lucene、Solr或Elasticsearch,用于快速全文检索电子图书内容。 5. 安全技术:包括加密传输(SSL/TLS)、身份验证(OAuth、JWT)、访问控制(RBAC)等,保障系统安全。 四、系统设计原则 1. ...
8. **搜索功能**:Python可以集成全文搜索引擎如Elasticsearch或Solr,提供高效的内部搜索功能。 9. **API接口**:Python的requests库可以用来实现与其他服务的API交互,比如集成社交媒体分享功能或者获取外部数据...