文章目录
1. 主流搜索引擎
在实际业务中,当搜索的速度,性能和高可用性是核心要求时,对TB和PB的数据执行搜索可能会遇到挑战,此时就需要用到分布式全文检索。了解过搜索引擎的应该清楚,目前最热门的两款开源的搜索引擎,Solr和ElasticSearch都是非常不错的选择。
2. Solr 和 ElasticSearch 比较
2.1 Solr 优缺点
2.1.1 Solr 优点
-
Solr 有一个更大、更成熟的用户、开发和贡献者社区。
-
支持添加多种格式的索引,如:HTML、PDF、微软 Office 系列软件格式以及 JSON、XML、CSV 等纯文本格式。
-
Solr 比较成熟、稳定。
-
不考虑建索引的同时进行搜索,速度更快。
2.1.2 Solr 缺点
- 建立索引时,搜索效率下降,实时索引搜索消息不高。
- 登录认证不够友好。
2.2 ElasticSearch 优缺点
2.2.1 ElasticSearch 优点
-
ElasticSearch 是分布式的。不需要其他组件,分发是实时的,被叫做”Push replication”。
-
ElasticSearch 完全支持 Apache Lucene 的接近实时的搜索。
-
处理多租户不需要特殊配置,而 Solr 则需要更多的高级设置。
-
Hadoop 可以使用 ElasticSearch-Hadoop (ES-Hadoop) 连接器,利用 ElasticSearch的实时搜索和分析功能处理大数据。
2.2.2 ElasticSearch 缺点
- ElasticSearch在技术上是开源的,但并非完全开源。
2.3 流行趋势
毫无疑问,ES 已经成为全文索引的事实霸主,名气在国内赶超 Solr。通过 Google 搜索趋势对比发现,ES 比 Solr 更加有吸引力,Solr 反而有下降的趋势。
2.4 检索速度
当单纯的对已有数据进行搜索时,Solr 更快。
当实时建立索引时,Solr 会产生 IO阻塞,查询性能较差,ElasticSearch 具有明显的优势。
随着数据量的增加,Solr 的搜索效率会变得更低,而 ElasticSearch 却没有明显的变化。
2.5 搜索
Solr专注于文本搜索,而ElasticSearch则常用于查询、过滤和分组分析统计。
因此当比较两者时,对那些不仅需要文本搜索,同时还需要复杂的时间序列搜索和聚合的应用程序而言,毫无疑问ElasticSearch是最佳选择。
2.6 社区
Solr 拥有更多、更成熟的用户、开发者和贡献社区。网上可以搜到大量文档,以及问题解决案例。
ElasticSearch 虽然发布时间较短,但是发展迅速,很多知名公司都在使用。社区虽然小,但是很活跃。所以完全不必担心。
2.7 可扩展性和分布式
ElasticSearch默认是集群化的(即使是在单台服务器上运行,也称之为集群),并且总是可以添加更多的服务器用于增加容量或者容错性。类似的,如果负载较低的时候,可以很容易地从集群中移除服务器,降低成本。
SolrCloud 是 Solr 提供的分布式搜索方案。 SolrCloud 是基于 Solr 和 Zookeeper 的分布式搜索方案 。在分片或节点故障的情况下, SolrCloud 重新平衡是复杂且难以管理的。
2.8 配置管理
ElasticSearch 的一个强项是默认配置对程序员非常友好,入门非常容易。很多功能都是开箱即用,并不需要用户去配置。ElasticSearch帮助我们从复杂的配置中解脱出来,将更多的时间和精力放在其他事情上。
Solr 的配置太过于灵活,给了用户很多犯错误的可能。但 Solr 的定制能力更强,几乎什么都可以配置。对于开发者来说,要实现一个新的功能,可以不用动 Solr 核心代码,而给 Solr 增加一些 Processor 和 Component,然后通过 XML 配置服务器的行为。
2.9 结论
最终搜索引擎选型是:ElasticSearch。
ElasticSearch和Solr的运用非常广泛,**Solr在信息检索领域提供了强大的功能,但是ElasticSearch更易于投入生产和扩展。**没有好坏之分,根据目前实际需求而言,考虑的因素是方便投入生产和扩展、大数据检索、聚合分组计算、多租户等,故最终选择ElasticSearch。