elasticsearch vs solr 关于数据结构/查询功能

Posted

技术标签:

【中文标题】elasticsearch vs solr 关于数据结构/查询功能【英文标题】:elasticsearch vs solr regarding data structure/query features 【发布时间】:2012-01-17 00:41:01 【问题描述】:

我已经看到很多比较弹性搜索和 Solr 的可扩展性、速度和部署场景的问题(和很好的答案),但我似乎无法找到关于查询如何能够实现的任何差异或相对优势的良好信息处理索引数据。

具体来说,我对 elasticsearch 和 Solr 在以下方面的差异感兴趣:

    分面功能:它们对分面的处理有何不同,还是基本相同?

    模式处理:似乎 elasticsearch 具有灵活性优势,因为模式可以通过其余 API 动态定义,而 Solr 要求它们在 schemas.xml 中预定义(不过,我还没有看到这种差异的具体确认)。除此之外,模式的使用方式是否存在实质性差异?

    索引过滤器:针对特定搜索优化数据的方式之间是否存在差异?例如我已经看到提到诸如 Solr 的字段重复和查询标记化过滤器之类的东西,它们增加了搜索算法的可定制性,但没有看到太多关于弹性搜索的同类信息,但也许它只是自动处理所有这些东西?

    查询表达能力:查询 DSL 基本上是一样的表达能力,还是有根本的区别?

    “提升”和/或结果定制:有哪些工具可用于硬编码或按摩算法搜索结果?

再次,请注意,我对速度/可扩展性/性能问题完全不感兴趣,只对搜索数据结构和查询语言的表现力感兴趣——可能整个问题可以概括为:是否存在我可以执行的搜索或我可以在 elasticsearch 中创建但无法在 Solr 中复制的数据结构,反之亦然?

【问题讨论】:

【参考方案1】:

    faceting 几乎是一样的,除了 ES 也允许通过动态脚本和 Solr 允许 facet 分页。同样在 Solr 中,有一个方便的构面模式来进行简单的商店搜索样式构面(注意:使用 ES 也相对容易,但不是开箱即用)。 ES faceting 可以更强大,因为不需要将 facets 绑定到 filterquery。

    可以通过 API 更新 ES 模式!或在文件中定义它并为 type 指定。对于 Solr,您为每个 index 创建一个配置文件。顺便说一句:使用动态字段,您对 Solr 的架构限制较少。

    ES 仅缺少自动升温功能(但这是与性能相关的,因此对您来说并不有趣;))和按功能分组。否则两者都使用类似的 lucene 东西。 ES 允许很多高级组合,就像在 lucene 中一样。 Parent child类似于group by feature,在Solr IMO中没有实现。

    ES 的标准查询是通过 JSON 制定的,因此您几乎可以创建可以通过 lucene 创建的所有内容。在 Solr 中,你可以做很多高级的事情,但通常你需要一些 Solr 的基础知识,比如本地参数等。看看这个nice discussion。

    不明白这个:)

是否有我可以执行的搜索或我可以创建的数据结构 在弹性搜索中我无法在 Solr 中复制,反之亦然?

在 ES 中有渗滤器功能,这可能很难用 Solr 实现。 在 ES 中,您还具有实现乐观锁定的版本控制功能,您具有索引别名和扫描查询来深入浏览您的索引 - 不确定 Solr 是否具有类似的功能。例如。别名有助于使rolling index implementation. 相对较短。

【讨论】:

re #5:我在某处读到,在 Solr 中您可以围绕搜索算法进行最终运行,即您可以在不更改术语权重的情况下稍微“修复”搜索结果。因此,例如,您可以说,只要查询包含特定术语,您希望某个文档成为第一个结果,即使搜索算法通常不会返回该文档。不过,我从来没有遇到过有关如何真正做到这一点的信息。 嗯,不确定。但是通常可以在索引和查询时完成提升。你是这个意思吗?参见例如ES 讨论中的最新条目:groups.google.com/group/elasticsearch/browse_thread/thread/… 这里是一个 solr doc wiki.apache.org/solr/FunctionQuery btw:在 ES 中,脚本功能是更高级的 IMO 用于提升:elasticsearch.org/guide/reference/query-dsl/… @ConnieDobbs:我相信你的意思是指wiki.apache.org/solr/QueryElevationComponent。 (例如:'Editorial Boosting')不确定 ES 是否支持这个

以上是关于elasticsearch vs solr 关于数据结构/查询功能的主要内容,如果未能解决你的问题,请参考以下文章

Elasticsearch VS Solr

两分钟告诉你:Solr与Elasticsearch的匹配功能控制的区别

搜索引擎SOLR VS Elasticsearch(2019技术选型参考)

Apache Solr vs Elasticsearch-feature

Apache Solr vs Elasticsearch-feature

搜索引擎选型Solr vs. Elasticsearch:选择开源搜索引擎