首页 文章

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

提问于
浏览
0

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

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

如果有人能解释我那会很棒:)

谢谢 .

2 回答

  • 7

    我在these blog posts中已经相当广泛地写了这个主题 . 在我们的书中,Relevant Search .

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

    索尔是

    • Apache Foundation项目 . 这意味着它有更多的社区驱动的感觉

    • 由大数据领域的许多供应商驱动(LucidWorks,Cloudera,Datastax ......)

    • 更容易编写插件

    • 更多地关注传统的搜索问题和功能,而不是分析

    • 倾向于吸引人们解决非常先进的问题

    • 一个重要的问题"bug" - 问题

    • 有一个更难使用的查询API,但更强大

    • 相对"advanced"感受用户体验

    另一方面,

    Elasticsearch

    • 更像是一个"benevolent dictator"项目,具有非常简洁的API,文档等

    • 由公司Elastic公司推动

    • 您可以编写有限类型的插件

    • 重点关注搜索(聚合等)的分析方面,而不仅仅是纯粹的搜索

    • 允许您更精确地控制分析

    • 更容易使用查询API,但功能不强(参见上面的博客文章,以及SO question

    • 相对用户友好的体验

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

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

  • 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索引格式来存储有关磁盘上这些标记的统计信息 .

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

相关问题