Solr的与ElasticSearch [关闭]Solr的与ElasticSearch [关闭](S

2019-05-13 14:18发布

什么是这些技术之间的核心架构差异?

此外,什么用例是一般更适合于每一个?

Answer 1:

更新

现在的问题范围已得到纠正,我在这方面可能添加的东西还有:

有很多之间比较Apache Solr实现和ElasticSearch可用的,所以我会引用这些,我发现最有用的自己,即覆盖了最重要的几个方面:

  • 鲍勃·优诺已经链接kimchy的回答ElasticSearch,狮身人面像,Lucene的,Solr的,Xapian的。 适合哪些对哪些用途? ,它总结了为什么他说干就干,创建ElasticSearch,这在他看来, 提供了一个优越得多分布式模型和易用性相比,Solr的原因。

  • 瑞安Sonnek的实时搜索:Solr的VS Elasticsearch提供了一个精辟的分析/比较和解释了为什么他从Solr的切换到ElasticSeach,尽管是一个快乐的Solr用户已经-他总结了如下:

    Solr的可能是建立标准的搜索应用程序时所选择的武器,但Elasticsearch需要到一个新的水平的架构,用于创建实时的现代化的搜索应用程序 。 渗透是一个令人振奋的创新功能,一手打击Solr的右出来的水。 Elasticsearch是可扩展的,快速的并与整合的梦想 。 一路平安Solr的,很高兴认识你。 [重点煤矿]

  • 在ElasticSearch维基百科的文章引用了比较,从德国知名杂志的iX,上市的优点和缺点,这几乎总结一下上面已经说过:

    优点

    • ElasticSearch是分布式的。 无需单独的项目。 副本是近乎实时的也被称为“推复制”。
    • ElasticSearch完全支持近乎实时搜索的Apache Lucene的的。
    • 处理多租户是不是一个特殊的配置,其中使用Solr更高级的设置是必要的。
    • ElasticSearch介绍网关,这使得完全备份更简单的概念。

    缺点

    • 只有一个主要开发 [不适用了根据当前elasticsearch GitHub的组织 ,除了在第一时间有一个非常活跃的提交者基础]
    • 没有autowarming功能 [不适用了,根据新指数预热API ]

最初的回答

他们是完全不同的技术解决完全不同的使用情况,因此不能在所有以任何有意义的方式进行比较:

  • Apache Solr实现 - Apache Solr实现在一个易于使用,提供Lucene的能力,与像刻面,可扩展性以及更多的附加功能快速搜索服务器

  • 亚马逊ElastiCache - 亚马逊ElastiCache是一种Web服务,它可以很容易地部署,运行和扩展的内存缓存在云中。

    • 请注意, 亚马逊ElastiCache是协议兼容Memcached的,被广泛采用的内存对象缓存系统,所以代码,应用程序和你今天使用与现有Memcached的环境将与服务无缝工作流行的工具 (见Memcached的细节)。

[重点煤矿]

也许这一直困惑与以下两个相关技术的这种或那种方式:

  • ElasticSearch - 它是一个开源(Apache 2的),建立在Apache Lucene之上的分布式,基于REST的,搜索引擎。

  • 亚马逊CloudSearch - 亚马逊CloudSearch是,让客户能够轻松快速和高度可扩展的搜索功能集成到他们的应用程序的云完全管理搜索服务。

Solr的和ElasticSearch产品听起来一见钟情惊人地相似,都使用同样的后端搜索引擎,即Apache的Lucene的 。

虽然Solr的是旧的,相当灵活和成熟,因此被广泛使用,ElasticSearch已经开发专门解决与现代云环境的可扩展性的要求,这是硬(ER)Solr的缺点,以解决与Solr的

因此,它很可能是最有用与最近推出的亚马逊CloudSearch比较ElasticSearch(见的介绍后开始在一小时搜索低于$ 100 /月 ),因为这两个要求,以覆盖在原理上是相同的用例。



Answer 2:

我看到一些上面的答案都是现在有点过时了。 从我的角度来看,我既Solr的(云和非云)和ElasticSearch工作每天的基础上,这里有一些有趣的差异:

  • 社区:Solr的有一个更大,更成熟的用户,开发者和贡献者社区。 ES拥有用户的规模较小,但活跃的社区和贡献者的社区越来越多
  • 到期日:Solr的是比较成熟,但ES增长迅速,我认为这是稳定的
  • 性能:很难判断。 我/我们没有做直接的性能基准。 一个人在LinkedIn做比较的Solr与ES与老师一次,而是因为他们同时用于Solr的ES和非专业设置的初步结果应该被忽略。
  • 设计:人们喜欢的Solr。 Java的API是有点冗长,但人们喜欢它是如何放在一起。 Solr的代码是不幸的是并不总是很漂亮。 此外,ES具有分片,实时复制,文件和路由内置。 虽然一些这Solr中存在,也感觉有点像一个回想起。
  • 支持:有一些公司提供技术和咨询都Solr的和ElasticSearch支持。 我认为,为双方提供支持的唯一一家公司是Sematext(披露:我Sematext创始人)
  • 可扩展性:既可以缩放到非常大的集群。 ES是很容易,预Solr的4.0版本的Solr的规模,但与Solr的4.0这不再是这种情况。

对于Solr的主场迎战ElasticSearch主题的更彻底覆盖看看https://sematext.com/blog/solr-vs-elasticsearch-part-1-overview/ 。 这是该系列从Sematext做直接的和中性的Solr与ElasticSearch比较职位的第一篇文章。 披露:我在Sematext工作。



Answer 3:

我看到,很多人在这里已经回答了这个ElasticSearch VS Solr的问题在特性和功能方面,但我没有看到关于它们在性能方面如何比较在这里很多讨论(或其他地方)。

这就是为什么我决定开展我自己的调查 。 我把已经使用了Solr的搜索一词已经编码的异构数据源的微服务。 我切换出的Solr为ElasticSearch然后我跑AWS两个版本与已经编码的负载测试应用程序和捕获用于随后的分析的性能度量。

这是我发现的。 ElasticSearch有较高的13%的吞吐量,当它来建立索引文件,但是Solr的是快十倍。 当它来查询文件,Solr的有五倍以上的吞吐量,比ElasticSearch快5倍。



Answer 4:

由于Apache Solr实现悠久的历史,我觉得Solr的一个优势是它的生态系统 。 有许多Solr的插件不同类型的数据和宗旨。

搜索平台,在下面层从底部到顶部:

  • 数据
    • 用途:代表不同数据类型和来源
  • 文档建筑
    • 目的:建立索引的文档信息
  • 索引和搜索
    • 目的:建立和查询文档索引
  • 逻辑增强
    • 目的:用于处理搜索查询和结果的其他逻辑
  • 搜索平台服务
    • 用途:添加搜索引擎核心的额外功能,以提供一个服务平台。
  • UI应用程序
    • 用途:最终用户搜索界面或应用程序

参考文章: 企业搜索



Answer 5:

我一直在努力都Solr的和.Net应用程序弹性搜索。 我所面临的主要区别是

弹性搜索:

  • 更多的代码和更少的配置,但有API的改变,但仍然是一个代码更改
  • 为复杂类型,类型内型,即嵌套类型(无法在solr的实现)

Solr的:

  • 更少的代码和更多的配置和维护稍欠
  • 查询过程中的分组结果(大量的工作来实现在短期没有直路弹性搜索)


Answer 6:

我创建的elasticsearch和Solr和Splunk的,你可以用它2016更新的主要区别表:



Answer 7:

虽然上述所有环节都有可取之处,并获益匪浅我过去,作为一个语言学家“暴露”于各种Lucene搜索引擎在过去的15年里,我不得不说,弹性搜索的发展是非常快的Python编写的。 话虽这么说,有些代码感到不直观的给我。 于是,我伸手在ELK栈,Kibana,从开源的角度的一个组成部分,并发现我可以在Kibana很容易产生elasticsearch的略带神秘的代码。 另外,我可以拉铬感ES查询到Kibana为好。 如果您使用Kibana评估ES,这将进一步加快你的评价。 什么花费几个小时才能在其他平台上运行的上涨,并在最坏的情况(最大的数据集)在几分钟elasticsearch(RESTful接口)的顶部JSON运行的意识; 在几秒钟的最好的。 对于elasticsearch的文档,而700+的页面,没有回答的问题,我有,通常会在SOLR或其他Lucene的文档,这显然花了更多的时间来分析解决。 此外,你可能想看看在弹性搜索聚集体,采取车花了一个新台阶。

更大的画面:如果你正在做数据科学,文本分析或计算语言学,elasticsearch有一些排名算法,似乎在信息检索领域的创新好。 如果你使用任何TF / IDF算法,文字频率/逆文档频率,elasticsearch这个1960年的算法延伸到一个新的水平,即使使用BM25,最佳匹配25,和其他关联排名算法。 所以,如果你是得分或排名的话,短语或句子,elasticsearch确实在飞行这个进球,没有大的开销是需要几个小时等数据分析方法 - 另一个elasticsearch节省时间。 随着ES,结合一些从与实时JSON数据相关性打分汇总了瓢泼大雨和排名的优势,你可以找到一个最佳组合,这取决于你要么敏捷(故事)或建筑(用例)的方法。

注:没看到上面的聚合类似的讨论,但不能在聚合和相关性打分 - 我的道歉对任何重叠。 披露:我不为弹性因不同的路径2009建筑工作,将无法从他们的出色工作不久的将来受益,除非我做一些elasticsearch慈善工作,这不会是一个坏主意



Answer 8:

想象一下,用例:

  1. 小(为10Mb,100Mb的,1000-100000文档)搜索索引大量(100+)。
  2. 它们由大量的应用中使用(微服务)
  3. 每个应用程序可以使用多个索引
  4. 按大小指数小,是。 但巨大的负载(数百个搜索请求每秒),并要求是复杂的(多个聚合,条件等)
  5. 停机时间不得
  6. 所有这些工作年之久,并不断增长。

主意,有每各项指标单独ES实例 - 在这种情况下,巨大的开销。

根据我的经验,这种使用情况是非常复杂,Elasticsearch支持。

为什么?

第一。

主要的问题是根本回兼容性漠视。

最新的变化是太酷了! (注:想象一下SQL服务器需要你做小的变化在所有的SQL语句,升级的时候......无法想象但对于ES这是正常的。)

这将在下一个主要版本降至弃用是如此性感! (注:你知道,Java的包含一些弃用,其中超过20岁,但在实际的Java版本仍在工作......)

不仅如此,有时你甚至有一些东西,无处记录(跨个人只来过一次,但...)

所以。 如果你想升级ES(因为你需要新的功能,对于一些应用,或者您想获得bug修复) - 你是在地狱里。 尤其是如果它是重大的版本升级。

客户端API将不备份兼容。 指标设置不会回来兼容。 和升级所有应用/服务的同一时刻与ES升级是不现实的。

但你必须这样做时有发生。 没有其它的方法。

现有的索引会自动升级? - 是的。 但它不能帮助你时,你会需要改变一些旧索引设置。

一起生活,你需要不断的投资...你的应用程序/服务向前兼容大量的电力与ES的未来版本。 或者你需要你之间建立(反正不断支持)某种中间件的应用程序/服务和ES,它提供了你回来兼容的客户端API。 (而且,你不能使用传输客户端(因为它所需的jar升级为每个小版本升级ES),这一事实不要让你的生活更轻松)

难道看起来很简单的便宜? 不,这不对。 离得很远。 它基于ES复杂的基础设施的不断维修,是的方式在所有可能的感官昂贵。

第二。 简单的API? 嗯......没有真的。 当你真的使用复杂的条件和聚合.... JSON请求有5倍的水平是什么,但并不简单。


不幸的是,我有SOLR没有经验,不能说什么。

但是Sphinxsearch是这种情况要好得多了,becasue完全兼容回来的SphinxQL。

注:Sphinxsearch /曼提确实有趣。 它不是基于Lucine,并且因此严重不同。 包含从盒子几个独特的功能,其ES没有与小型/中型指标快疯了。



Answer 9:

我用Elasticsearch 3年和Solr约一个月,我觉得elasticsearch集群是很容易的安装相比,Solr的安装为一体。 Elasticsearch有帮助文档以极大的解释池。 一个使用情况下,我被卡住了直方图聚集这是在ES然而提供Solr中没有发现的。



Answer 10:

如果您已经使用SOLR,仍然坚持下去。 如果你开始了,去弹性搜索。

最大的重大问题已修复了SOLR,这是相当成熟。



Answer 11:

我只用弹性的搜索。 因为我发现Solr的是很难启动。 弹性搜索的功能:

  1. 易于启动,很少设置。 即使新手可以设置一个簇步步。
  2. 它使用NoSQL的查询简单的RESTful API。 和许多语言库,方便存取。
  3. 良好的文档,你可以阅读的书。 有官方网站的网络版本。


Answer 12:

在Solr的非常复杂和嵌套数据搜索也很复杂添加嵌套的文件。 但弹性搜索容易添加嵌套的文件和搜索



文章来源: Solr vs. ElasticSearch [closed]