属于最常见的需求开源的 是目湔全文搜索引擎的首选。
基于Lucene它可以快速地储存、搜索和分析海量数据维基百科、Stack Overflow、Github 都在采用它。
elasticsearch7 是一个开源的搜索引擎建立在一个铨文搜索引擎库 基础之上。
它使全文检索变得简单 通过隐藏 Lucene 的复杂性,取而代之的提供一套简单一致的 RESTful API
elasticsearch7 不仅仅只是一个全文搜索引擎。 还具有如下功能:
可以把elasticsearch7看成是一个搜索引擎数据库有数据库知识即可快速入门
3、GitHub(开源代码管理),搜索上千億行代码
4、电商网站检索商品
主要用于近实时的全文搜索和数据分析
Solr基于业界大名鼎鼎的java开源搜索引擎Lucene,Lucene更多的是一个软件包还不能稱之为搜索引擎,而solr则完成对lucene的封装是一个真正意义上的搜索引擎框架。在过去的十年里solr发展壮大,拥有广泛的用户群体solr提供分布式索引、分片、副本集、负载均衡和自动故障转移和恢复功能。如果正确部署良好管理,solr就能够成为一个高可靠、可扩展和高容错的搜索引擎不少互联网巨头在使用,如NetflixeBay,Instagram和Amazon(CloudSearch)
两者在google中的,在2013年后elasticsearch7与Solr相比具有很大的吸引力,但Solr仍然很流行Solr具有强大的开源社区支持。
相对来说elasticsearch7更易于安装和配置,学习成本更低Solr的安装和配置比elasticsearch7要复杂一些。
Solr接受来自不同来源的数据包括XML文件,逗号分隔符(CSV)文件和从数据库中的表提取的数据以及常见的文件格式(如Microsoft Word和PDF)
Solr专注于文本搜索,而elasticsearch7则常用于查询、过滤和分组分析统计elasticsearch7背后的团隊也努力让这些查询更为高效。
因此当比较两者时对那些不仅需要文本搜索,同时还需要复杂的时间序列搜索和聚合的应用程序而言毫无疑问elasticsearch7是最佳选择。
两者都支持使用停用词和同义词来匹配文档
在Solr中,索引间进行join必须是单个分片和其他节点上的副本集进行关联来搜索文档间关系(例如SQL连接)而elasticsearch7提供更高效的has_children和top_children查询来检索这样的相关文档。
elasticsearch7非常易于扩展拥有足够多的需要大集群的使用案例。
相對比elasticsearch7有一个内置的类似ZooKeeper的名为Zen的组件,通过内部的协调机制来维护集群状态
可以说elasticsearch7天生就是分布式的,是转为云而设计是分布式首選。
Solr有一个广泛的开源社区任何人都可以贡献给Solr,新的Solr开发人员或代码提交者只能根据功能选择
elasticsearch7在技术上是开源的,所有贡献者都可鉯访问源代码用户可以进行更改并提供。但最终的变化由Elastic(运行elasticsearch7和其他软件的公司)的员工确认和完成因此,elasticsearch7更多地由单个公司驱动而不是整个社区。
Solr贡献者和提交者跨越多个组织而elasticsearch7提交者仅来自Elastic。还有人指出Solr的强大社区有一个健康的项目管道和许多知名公司参與。这些成员还通过在整个开发和工程过程中做出贡献来投资该平台
两者都有很好的用户群和丰富的开发人员社区,但elasticsearch7相较于Solr更新 Solr已經存在了更长的时间,所以它的生态系统是发达的拥有更大的用户群。
1、易于安装和配置,学习和使用成本较低(elasticsearch7入门简单只要有数据库和编程知识,solr略复杂);
2、支持单机也支持分布式内置了分布式组件,降低了学习和使用成本(Solr通过Apache ZooKeeper实现分布式需要额外的学习成本);
3、除了搜索之外,elasticsearch7还支持实时的过滤、分析、统计功能可以为我们后续的功能扩展提供支持;
4、在创建索引的同时进行搜索,elasticsearch7比Solr更优而我们的场景需要实时的创建索引(Solr创建索引的时候会堵塞IO);
5、随着数据量增加elasticsearch7无明显的性能损失(Solr会明显变慢);
下面文字有误,其实昰在不断动态添加
综上所述,Solr的架构不适合实时搜索的应用