elasticsearch和solr之间的根本区别是什么?

时间:2016-01-30 07:46:07

标签: apache search elasticsearch solr search-engine

我们在弹性搜索和搜索技术的solr之间提到了很多差异。提到的差异主要是数据格式,API可访问性,分析支持,适应性,云集成,地理空间搜索,索引等等。

此外,他们在所有地方都提到过这两种搜索技术都建立在Apache Lucene之上。我有一个基本的问题,如果两者都建立在搜索解决方案之上(Lucene在这里),那么查询的工作方式肯定存在一些差异吗?就像我只从文本搜索方面看并留下所有其他东西一样,如何在ES和solr中执行文本搜索。搜索引擎搜索/优化的方式应该有一些配置/行为改变?我需要以文本字符串为例深入了解搜索的工作原理。

如果有人可以解释我的话会很棒:)

感谢。

3 个答案:

答案 0 :(得分:7)

我在these blog posts中对此主题进行了相当广泛的撰写。在我们的书中Relevant Search

这是一个巨大的话题。但我会尽力让你失望。你可以用一个做什么,你可以用另一个做。但是,让我试着给你一个纲要,帮助你看到树木的森林。

Solr是

  • Apache Foundation项目。这意味着它有更多的社区驱动的“集市”感觉
  • 大数据领域的许多供应商(LucidWorks,Cloudera,Datastax ......)推动
  • 更容易为
  • 编写插件
  • 更多关注传统搜索问题和功能,而不是分析
  • 倾向于吸引人们解决非常先进的问题
  • 一个重要的“错误” - sea biscuit问题
  • 使用查询API更难,但功能更强大
  • 相对“高级”感觉用户体验
另一方面,

Elasticsearch

  • 更像是一个“仁慈的独裁者”项目,非常干净&简明的API,文档等
  • 由Elastic公司
  • 大力推动
  • 您可以编写有限类型的插件
  • 专注于搜索(聚合等)的分析方面,而不仅仅是纯粹的搜索
  • 允许您更精确地控制分析
  • 更容易使用查询API,但功能不强(请参阅上面的博客文章,以及此SO question
  • 相对用户友好的体验

我想说如果你正在解决搜索难题并喜欢深入研究搜索引擎的Java代码来解决你的问题,请选择Solr。 (当它做一些奇怪的事情时,期望调试Solr本身)

另一方面,如果调试搜索引擎会吓到你。如果你更关注分析,我会选择Elasticsearch。它会更友好。

答案 1 :(得分:1)

正如您所说,Lucene是Solr和Elasticsearch使用的基础全文搜索库。 Lucene在两者之间的使用和暴露方式存在一些细微差别,但就文本索引和查询的执行方式而言,它们几乎完全相同。

两者都使用标记化和令牌过滤器(ES:https://www.elastic.co/guide/en/elasticsearch/reference/2.0/analysis-tokenfilters.html,Solr:https://cwiki.apache.org/confluence/display/solr/Understanding+Analyzers,+Tokenizers,+and+Filters)的概念来分割和处理文本,并且都使用相同的Lucene索引格式来存储有关这些的统计信息磁盘上的令牌。

我怀疑你无法找出这个级别的差异的原因是因为实际上没有。

答案 2 :(得分:0)

Solr和elasticsearch都使用lucene运行,因此您需要安装它。

https://logz.io/blog/solr-vs-elasticsearch/ http://solr-vs-elasticsearch.com/ https://www.searchtechnologies.com/blog/solr-vs-elasticsearch-top-open-source-search

请参阅上文,了解更多内容。