
Apache Solr与Elasticsearch的区别
Apache Solr是一个用Java语言编写的企业搜索平台,具有全文搜索和动态聚类以及No-SQL功能。这是一个开源的应用程序,建立在一个Java库上,其中的建议是由网站本身带来的。Apache Solr也提供了可扩展性。一个基于名为Lucene的Java库的搜索引擎,提供基于HTTP的网络接口和支持全文搜索的JSON文档,被称为Elasticsearch。实时搜索是由一个基于Java的搜索引擎提供的,可以通过RESTful API支持来访问。速度和可扩展性是其主要优势。
Apache solr与Elasticsearch之间的正面比较(信息图表)
下面是Apache solr与Elasticsearch之间的比较

主要区别
- 由于Elasticsearch和Solr都使用了Lucene库,实时搜索支持各种功能集和基于JSON的数据库查询。最初,Solr只支持标准查询解析器,现在它支持基于JSON的查询。标准查询解析器使用户在语法上容易出错,但它支持任何形式的复杂查询。这些复杂的查询在Elasticsearch中是不存在的。此外,Solr还提供了速度搜索,有助于自动完成、突出显示和地理搜索。Elasticsearch中存在聚合查询,因为它有一个聚合框架,帮助工具管理内存足迹。DSL搜索在Elasticsearch中提供,但在Apache Solr中没有。
- 最初,Apache Solr需要一个定义好的模式,这对数据的索引很重要。现在Solr在其工具中提供了一个无模式的架构。同样,Elasticsearch也提供了一个无模式的架构,非结构化数据和任何其他字段都很容易索引,不需要定义模式。这使得两个搜索引擎的索引都很容易。自定义分析器与干系和基于同义词的索引一起被支持,使用户在工具中的搜索变得容易。两种工具都提供了标记器,以便将文本分解成小块并进行搜索。
- Solr和Elasticsearch都提供了分片功能,其中Elasticsearch更注重集群管理和扩展,所以一旦创建了分片,就不能在这个工具中增加。Shrink API可以被用来管理分片,从而进行扩展。Solr不支持收缩,但我们可以分割分片,为存储数据腾出更多空间。在Solr中,ZooKeeper被用于集群协调,而Elasticsearch有一个内置的发现模块来管理集群。在Elasticsearch中可以很容易地进行集群的重新平衡,但在Apache Solr中却不那么容易。
- Solr有一个庞大的社区,因为它是最先开发的,开发者是根据他们对该工具的贡献被选入社区的。Elasticsearch的工作方式不同,开发者可以对代码做出贡献,但必须得到Elasticsearch员工的批准。因此,社区的规模并不大。基于文档,Elasticsearch在其网站以及互联网上提供了大部分指南。文档中提供了一些例子。在Apache Solr中缺少这些带例子的教程,而且这里的文档维护也比较少。如果对文档进行适当的维护,Solr可以在API方面击败Elasticsearch。
Apache Solr与Elasticsearch的比较
| Apache Solr | Elasticsearch |
| Apache Solr最初是在2004年开发的,在最初的时候因为其数据库和搜索引擎的整合而很受欢迎。现在,它在数据库管理和搜索引擎系统中排名第三。受欢迎的原因是搜索应用的速度更快。 | Elasticsearch最初于2010年发布,是第一个与数据库管理系统一起流行的搜索引擎,因为它在市场上很受欢迎。它最受欢迎的原因是其可扩展性和网络界面系统,在Java库中支持HTTP。 |
| Apache Solr所需的内存比Elasticsearch少,它是512MB的HEAP内存。如果需要,我们也可以在bin目录下的Solr脚本文件中改变这个内存设置。Apache Solr的压缩版本为192 MB,文件以XML格式写入。 | 安装Elasticsearch需要1GB的HEAP内存。我们可以在配置目录中的jvm.options中改变内存设置。Elasticsearch有一个314.5MB的压缩版本,以YML格式编写。 |
| 索引文件是用Java编程语言的Lucene库编写的。有一个标准的查询分析器,具有强大的架构,与Lucene的语法相匹配。这使得企业搜索更快。 | Elasticsearch的索引文件也是用Java语言在Lucene库中编写的,其中的DSL支持是以本地格式提供的,这样就可以通过文件中的DSL架构支持进行搜索和扩展。这有助于提高搜索引擎的可扩展性。 |
| 需要处理程序来从各种来源摄取数据,如XML、CSV、PDF甚至是word文档。Apache Tika库被用来提取和索引任何文件类型。命令被用来从库中提取文件,这个过程比Elasticsearch相对更快,过程也更标准化。 | 这里不使用处理程序,而是使用基于JSON的文件。支持从不同的资源中摄取数据,并在轻量级数据传输器的帮助下将其纳入数据库。这些都存在于数据库的ELK Stack和Logstash中。 |
| 先进的信息检索被使用,因此企业定向文本搜索在这里更加集中。这在大数据工具和富文本格式文件方面是有利的。静态数据可以很容易地使用Solr进行搜索。 | 现代网络应用在这里更受关注,数据是以JSON文档的形式存在。日志分析的形式比较好,这使得应用的扩展本身很容易。数据库在发展中经历了许多转变,因此它始终是一个可靠的数据存储形式。 |
总结
两者在搜索引擎方面相似,但Solr的功能更多,而Elasticsearch的可扩展性更强。它总是取决于用户对搜索引擎的管理要求。大数据生态系统在Solr中被遵循,而分析模型在Elasticsearch应用中被遵循。