首页 文章

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

提问于
浏览
6

我已经看到很多问题(和好的答案)比较了elasticsearch和Solr的可扩展性,速度和部署方案,但我似乎无法找到关于查询如何与之一起工作的任何差异或相对优势的良好信息 . 索引数据 .

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

  • faceting capabilities :他们对刻面的处理方式有何不同,或者它们基本相同?

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

  • indexing filters :如何针对特定搜索优化数据之间存在差异?例如我've seen mention of things like field duplication and query tokenization filters for Solr that add to the search algorithm'的可定制性,但没有看到关于elasticsearch的同类信息,但也许它只是自动处理所有这些东西?

  • query expressivity :查询DSL基本上和其他人一样具有表现力,还是存在根本差异?

  • "boosting" and/or result customization :有哪些设施可用于硬编码或按摩算法搜索结果?

再次请注意,我对速度/可扩展性/性能问题一点都不感兴趣,只是搜索数据结构和查询语言的表现力 - 可能整个问题可以概括为: is there a search I can perform or a data structure I can create in elasticsearch that I cannot replicate in Solr, or vice-versa?

1 回答

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

    809 for ES schema可以通过API更新!或者在文件中定义它并为 type 指定 . 对于Solr,您可以根据 index 创建配置文件 . 顺便说一句:对于动态字段,您对Solr的模式限制较少 .

    • ES仅缺少自动装配功能(但这与性能相关,因此对您而言并不感兴趣;))和按功能分组 . 否则两者都使用类似的lucene东西 . ES允许在lucene中使用很多高级组合 . 父子类与功能组相似,并未在Solr IMO中实现 .

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

    • 不明白这个:)

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

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

相关问题