全文搜索引擎 ElasticSearch 还是 Solr? (3)

由于Lucene的复杂性,一般很少会考虑它作为搜索的第一选择,排除一些公司需要自研搜索框架,底层需要依赖Lucene。所以这里我们重点分析 Elasticsearch 和 Solr。

Elasticsearch vs. Solr。哪一个更好?他们有什么不同?你应该使用哪一个?

全文搜索引擎 ElasticSearch 还是 Solr?

历史比较

Apache Solr是一个成熟的项目,拥有庞大而活跃的开发和用户社区,以及Apache品牌。Solr于2006年首次发布到开源,长期以来一直占据着搜索引擎领域,并且是任何需要搜索功能的人的首选引擎。它的成熟转化为丰富的功能,而不仅仅是简单的文本索引和搜索; 如分面,分组,强大的过滤,可插入的文档处理,可插入的搜索链组件,语言检测等。

Solr 在搜索领域占据了多年的主导地位。然后,在2010年左右,Elasticsearch成为市场上的另一种选择。那时候,它远没有Solr那么稳定,没有Solr的功能深度,没有思想分享,品牌等等。

Elasticsearch虽然很年轻,但它也自己的一些优势,Elasticsearch 建立在更现代的原则上,针对更现代的用例,并且是为了更容易处理大型索引和高查询率而构建的。此外,由于它太年轻,没有社区可以合作,它可以自由地向前推进,而不需要与其他人(用户或开发人员)达成任何共识或合作,向后兼容,或任何其他更成熟的软件通常必须处理。

因此,它在Solr之前就公开了一些非常受欢迎的功能(例如,接近实时搜索,英文:Near Real-Time Search)。从技术上讲,NRT搜索的能力确实来自Lucene,它是 Solr 和 Elasticsearch 使用的基础搜索库。具有讽刺意味的是,因为 Elasticsearch 首先公开了NRT搜索,所以人们将NRT搜索与Elasticsearch 联系在一起,尽管 Solr 和 Lucene 都是同一个 Apache 项目的一部分,因此,人们会首先期望 Solr 具有如此高要求的功能。

特征差异比较

这两个搜索引擎都是流行的,先进的的开源搜索引擎。它们都是围绕核心底层搜索库 - Lucene构建的 - 但它们又是不同的。像所有东西一样,每个都有其优点和缺点,根据您的需求和期望,每个都可能更好或更差。Solr和Elasticsearch都在快速发展,所以,话不多说,先来看下它们的差异清单:

特征 Solr/SolrCloud Elasticsearch
社区和开发者   Apache 软件基金和社区支持   单一商业实体及其员工  
节点发现   Apache Zookeeper,在大量项目中成熟且经过实战测试   Zen内置于Elasticsearch本身,需要专用的主节点才能进行分裂脑保护  
碎片放置   本质上是静态,需要手动工作来迁移分片,从Solr 7开始 - Autoscaling API允许一些动态操作   动态,可以根据群集状态按需移动分片  
高速缓存   全局,每个段更改无效   每段,更适合动态更改数据  
分析引擎性能   非常适合精确计算的静态数据   结果的准确性取决于数据放置  
全文搜索功能   基于Lucene的语言分析,多建议,拼写检查,丰富的高亮显示支持   基于Lucene的语言分析,单一建议API实现,高亮显示重新计算  
DevOps支持   尚未完全,但即将到来   非常好的API  
非平面数据处理   嵌套文档和父-子支持   嵌套和对象类型的自然支持允许几乎无限的嵌套和父-子支持  
查询DSL   JSON(有限),XML(有限)或URL参数   JSON  
索引/收集领导控制   领导者安置控制和领导者重新平衡甚至可以节点上的负载   不可能  
机器学习   内置 - 在流聚合之上,专注于逻辑回归和学习排名贡献模块   商业功能,专注于异常和异常值以及时间序列数据  

这里了解更多。

综合比较

另外,我们在从以下几个方面来分析下:

近几年的流行趋势
我们查看一下这两种产品的Google搜索趋势。谷歌趋势表明,与 Solr 相比,Elasticsearch具有很大的吸引力,但这并不意味着Apache Solr已经死亡。虽然有些人可能不这么认为,但Solr仍然是最受欢迎的搜索引擎之一,拥有强大的社区和开源支持。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpxxjj.html