搜索引擎怎么选?ElasticSearch 与 Solr 分析对比

Posted 中兴大数据

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了搜索引擎怎么选?ElasticSearch 与 Solr 分析对比相关的知识,希望对你有一定的参考价值。

文 | 胡晓东@中兴大数据

ElasticSearch

简介

ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。ElasticSearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。

ElasticSearch使用Lucene作为内部引擎,但是在用它做全文搜索时,只需要使用统一开发好的API即可,而不需要了解其背后复杂的Lucene的运行原理。

当然ElasticSearch并不仅仅是Lucene这么简单,它不但包括了全文搜索功能,还可以进行以下工作:

  • 分布式实时文件存储,并将每一个字段都编入索引,使其可以被搜索。

  • 实时分析的分布式搜索引擎。

  • 可以扩展到上百台服务器,处理PB级别的结构化或非结构化数据。

使用案例

维基百科使用ElasticSearch来进行全文搜做并高亮显示关键词,以及提供search-as-you-typedid-you-mean等搜索建议功能。

StackOverflow将全文搜索与地理位置和相关信息进行结合,以提供more-like-this相关问题的展现。

GitHub使用ElasticSearch来检索超过1300亿行代码。

Sony公司使用elasticSearch作为信息搜索引擎。

ElasticSearch的优缺点

优点:

  • ElasticSearch是分布式的。不需要其他组件,分发是实时的,被叫做”Push Replication”。

  • ElasticSearch 完全支持 Apache Lucene 的接近实时的搜索。处理多租户(Multitenancy)不需要特殊配置,而Solr则需要更多的高级设置。

  • ElasticSearch 采用 Gateway 的概念,使得备份更加简单。

  • 各节点组成对等的网络结构,某些节点出现故障时会自动分配其他节点代替其进行工作。

缺点:

  • 当前ElasticSearch 社区活跃度相对偏少。

Solr

简介

Solr是一个基于LuceneJava搜索引擎服务器。Solr 提供了层面搜索、命中醒目显示并且支持多种输出格式(包括 XML/XSLT JSON 格式)。它易于安装和配置,而且附带了一个基于 HTTP 的管理界面。Solr已经在众多大型的网站中使用,较为成熟和稳定。Solr 包装并扩展了 Lucene,所以Solr基本上沿用了Lucene的相关术语。更重要的是,Solr 创建的索引与 Lucene 搜索引擎库完全兼容。通过对Solr 进行适当的配置(某些情况下可能需要进行编码),Solr 可以阅读和使用构建到其他 Lucene 应用程序中的索引。此外,很多 Lucene 工具(如Nutch Luke)也可以使用Solr 创建的索引。

Solr强大的外部配置功能使得无需进行Java编码,便可对其进行调整以适应多种类型的应用程序。Solr有一个插件架构,以支持更多的高级定制。因为2010年 Apache Lucene 和 Apache Solr 项目合并,两个项目是由同一个Apache软件基金会开发团队制作实现的。提到技术或产品时,Lucene/Solr或Solr/Lucene是一样的。

Solr的优缺点

优点:

  • Solr有一个更大、更成熟的用户、开发和贡献者社区。

  • 支持添加多种格式的索引,如:html、PDF、微软 Office 系列软件格式以及 JSON、XML、CSV 等纯文本格式。

  • Solr比较成熟、稳定。

  • 不考虑建索引的同时进行搜索,速度更快。

缺点:

  • 建立索引时,搜索效率下降,实时索引搜索效率不高。

ElasticSearch与Solr的比较

当单纯的对已有数据进行搜索时,Solr更快。

搜索引擎怎么选?ElasticSearch 与 Solr 分析对比

当实时建立索引时,Solr会产生IO阻塞,查询性能较差,ElasticSearch具有明显的优势。

搜索引擎怎么选?ElasticSearch 与 Solr 分析对比

随着数据量的增加,Solr的搜索效率会变得更低,而ElasticSearch却没有明显的变化。

搜索引擎怎么选?ElasticSearch 与 Solr 分析对比

综上所述,Solr的架构不适合实时搜索的应用。

下图为将搜索引擎从Solr转到ElasticSearch以后的平均查询速度有了50倍的提升。

搜索引擎怎么选?ElasticSearch 与 Solr 分析对比 

总结

  • 二者安装都很简单。

  • Solr 利用 Zookeeper 进行分布式管理,而ElasticSearch 自身带有分布式协调管理功能。

  • Solr 支持更多格式的数据,而ElasticSearch 仅支持JSON文件格式。

  • ElasticSearch有Query DSL,能够支持更加高级和复杂的查询语法,而且可以以此扩展实现类SQL语法的查询,但是Solr没有Query DSL。

  • Solr 官方提供的功能更多,而ElasticSearch 本身更注重于核心功能,高级功能多由第三方插件提供。

  • Solr 在传统的搜索应用中表现好于ElasticSearch,但在处理实时搜索应用时效率明显低于 ElasticSearch。

  • Solr 是传统搜索应用的有力解决方案,但 ElasticSearch 更适用于新兴的实时搜索应用。


 

大数据时代的思考和洞察

长按二维码关注

以上是关于搜索引擎怎么选?ElasticSearch 与 Solr 分析对比的主要内容,如果未能解决你的问题,请参考以下文章

Lucene Solr Elasticsearch三者之间的关系,怎么选?

Elasticsearch搜索功能的实现--搜索引擎为什么选ES

搜索引擎选开源的 ElasticSearch 还是商业的 Splunk

ElasticSearch大数据搜索选开源还是商业软件?ElasticSearch 对比 Splunk

大数据搜索选开源还是商业软件?ElasticSearch对比Splunk

全文搜索引擎选 ElasticSearch 还是 Solr?