`
wbj0110
  • 浏览: 1599086 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

ElasticSearch 与 Solr 的对照测试

阅读更多

 

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.2Ges占用磁盘空间是4G

 

单机对比2

在一台Intel i732G内存的机器上,重新跑这两个的对比。不过有个重大的区别在于,Solr是在这台性能很好的机器上跑,而es的导入进程则是在一台Intel 四核 2.5G4G内存的机器上跑的,也许会有性能的差异。ES版本0.19.8Solr版本4.0-ALPHA

1. Solr的导入性能:3400万条记录,用时62分钟,平均9140/秒,占用空间12.75G

2. 使用 *999* 这样的模糊查询,3秒以内返回,稍长一点的查询条件 *00100014*,也是2~3秒返回

3. Es的导入性能(设置Xmx10G):3400万条记录,用时40分钟,平均14167/秒,占用空间33.26G,客户端采用4个并发。

4. 使用 *999* 这样的模糊查询,9秒返回,稍长一点的查询条件 *00100014*11.8秒返回

5. 如果不是针对所有字段查询,而是针对某个特定字段,比如 SAM_CODE: *00100014*,那么也是1秒以内返回。

6. 结论:es的查询效率也可以很高,只是我们还不会用。

7. 结论2es有个设置是把所有字段放一块的那个,缺省是放一起,但是不知道为什么没起到应有的作用。

 

备注:

1. Solr第一次的那个内存使用的是缺省设置,这次改为10G,结果导入性能反而变差了,400万条记录,用了8分钟,平均8333/秒,不知道为什么。

2. 改回缺省的内存配置,导入速度仍然慢。

3. 重启Linux,用10G的内存配置,再导入,5030万条记录,用时92分,约9112/秒,说明导入速度和内存配置没有大差别

4. 10G配置的情况下,检索速度也差别不大。

5. 为了搞清楚lucene4.0solr4.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 i732G内存)的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.8s1.3s0.02s0.02s0.02s

SAM_CODE: *00100014*0.1s0.1s0.02s0.03s0.05s

4. Solr4.0-ALPHASolrCloud的配置还算简单,启动一个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。查了很多资料,把Linuxulimit当中的nproc改成10240,把Xss改成256K,都解决不了问题。暂时没有办法进行。

 

 

结论

1. 导入性能,es更强

2. 查询性能,solr 4.0最好,essolr 3.6持平,可以乐观的认为,等es采用了lucene4之后,性能会有质的提升

3. Es采用SAM_CODE这样的查询性能很好,但是用_all性能就很差,而且差别非常大,因此,个人认为在目前的es情况下,仍然有性能提升的空间,只是现在还没找到方法。

 

更新:

刚才搜到了Solr的OOM错误,是一个尚未解决的issue: https://issues.apache.org/jira/browse/SOLR-3658

 

come from internet

分享到:
评论

相关推荐

    es与solr的区别_solr_ES_es与solr的区别_elasticsearch_

    在大数据和搜索引擎领域,Elasticsearch (ES) 和 Apache Solr 都是广泛使用的开源技术,它们都基于 Lucene 库,提供高性能、可扩展的全文搜索和分析能力。然而,两者在设计哲学、使用场景、功能特性以及社区支持等...

    搜索引擎选择: Elasticsearch与Solr - 叽歪.pdf

    在搜索引擎领域,Elasticsearch与Solr是两款被广泛使用且具有代表性的开源全文搜索引擎。它们都基于Apache Lucene构建,提供了强大的搜索引擎功能。在进行搜索引擎选择时,对比Elasticsearch与Solr可以帮助我们更好...

    ES和solr搜索方案对比

    ES(ElasticSearch)和Solr都是基于Lucene的搜索引擎,它们各自提供了一套搜索框架,用于实现高效的全文搜索功能。由于两者都是在Apache License 2下开源的,因此在选择使用哪种搜索方案时,需要根据不同的使用场景...

    相关性搜索利用Solr与Elasticsearch创建智能应用

    资源名称:相关性搜索 利用Solr与Elasticsearch创建智能应用内容简介:《相关性搜索:利用Solr与Elasticsearch创建智能应用》揭开了相关性搜索的神秘面纱,告诉大家如何将 Elasticsearch与 Solr这样的搜索引擎作为可...

    ElasticSearch与Solr搜索引擎特性对比-new.pdf

    ElasticSearch与Solr搜索引擎特性对比-new

    Solr Elasticsearch lucene 搜索引擎

    **Solr与Elasticsearch的比较** 虽然Solr和Elasticsearch都源自Lucene,但它们的设计目标和应用场景有所不同。Solr更倾向于定制化和灵活性,适合有特殊需求的大型企业搜索解决方案;而Elasticsearch则注重易用性和开...

    Relevant search with applications for Solr and Elasticsearch

    ### 相关搜索及其在Solr与Elasticsearch中的应用 #### 标题与描述解析 标题“Relevant search with applications for Solr and Elasticsearch”以及描述“Relevant search with applications for Solr and Elastic...

    java基础面试题es与solr的区别

    java基础面试题es与solr的区别

    elasticsearch-solr-connector:将 ES 或 SOLR 索引的内容转储到 algolia

    Elasticsearch/Solr 连接器 注意:此连接器仍处于测试阶段 设置 curl -fsSL ...

    elasticsearch 性能测试

    **Elasticsearch 性能测试** Elasticsearch 是一个分布式、全文检索的搜索引擎,广泛应用于数据分析、日志聚合和实时搜索场景。为了确保系统在高负载下仍能保持高效稳定,性能测试是至关重要的。本篇文章将围绕如何...

    ElasticSearch官方测试数据

    Elasticsearch(ES)是一种流行的开源全文搜索引擎,它基于Lucene库构建,被广泛用于大数据分析、日志聚合、实时搜索和索引等场景。官方提供的测试数据集是检验Elasticsearch功能、性能和稳定性的关键资源,可以帮助...

    相关性搜索 利用Solr与Elasticsearch创建智能应用

    本书揭开了相关性搜索的神秘面纱,告诉大家如何将Elasticsearch 或Solr 这样的搜索引擎作为可编程的相关性框架,从而表达业务排名规则。从这本书中你可学会如何结合各种外部数据源、分类方法以及文本分析手段对...

    Solr和ElasticSearch分析比较.docx

    实际生产环境测试:下图为将搜索引擎从 Solr 转到 Elasticsearch 以后的平均查询速度有了 50 倍的提升。 总结 1. Solr 并没有提供自带的负载均衡,完全要自己编程,实现起来比较复杂。 2. Elasticsearch:分布式...

    Solr 与 Elasticsearch 的对比与选型

    一、Elasticsearch特性 1.1 安装管理方便 Elasticsearch没有其他依赖,下载后安装非常方便;只用修改几个参数就可以搭建起来一个集群。 1.2 大规模分布式 Elasticsearch允许你开始小规模使用,但是随着你使用数据的...

    18_项目面试题_es与solr的区别.avi

    18_项目面试题_es与solr的区别

    (狂神)ElasticSearch快速入门笔记,ElasticSearch基本操作以及爬虫(Java-ES仿京东实战)

    (狂神)ElasticSearch快速入门笔记,ElasticSearch基本操作以及爬虫(Java-ES仿京东实战),包含了小狂神讲的东西,特别适合新手学习,笔记保存下来可以多看看。好记性不如烂笔头哦~,ElasticSearch,简称es,es是一个...

    ElasticSearch 官方示例测试数据

    ES 官方示例数据

    SolrCloud和ElasticSearch对比

    ### SolrCloud与ElasticSearch对比分析 #### 一、SolrCloud与ElasticSearch概述 **SolrCloud** 和 **ElasticSearch** 都是当前业界非常流行的搜索引擎技术,两者均基于 **Lucene** 构建,但在设计哲学、功能特性和...

Global site tag (gtag.js) - Google Analytics