elasticsearch,Search,Solr,Lucene,elasticsearch" /> elasticsearch,Search,Solr,Lucene,elasticsearch" />

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

关于数据结构/查询功能的elasticsearch与solr,search,solr,lucene,elasticsearch,Search,Solr,Lucene,elasticsearch,我已经看到了很多问题(和很好的答案)比较了elasticsearch和Solr的可伸缩性、速度和部署场景,但我似乎找不到关于查询如何处理索引数据的任何差异或相对优势的好信息 具体而言,我对elasticsearch和Solr在以下方面的差异感兴趣: 刻面能力:他们对刻面的处理有何不同,还是基本相同 模式处理:elasticsearch似乎有一个灵活性优势,可以通过RESTAPI动态定义模式,而Solr要求在schemas.xml中预定义模式(不过,我还没有看到对这种差异的具体确认)。除此之外,在

我已经看到了很多问题(和很好的答案)比较了elasticsearch和Solr的可伸缩性、速度和部署场景,但我似乎找不到关于查询如何处理索引数据的任何差异或相对优势的好信息

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

  • 刻面能力:他们对刻面的处理有何不同,还是基本相同

  • 模式处理:elasticsearch似乎有一个灵活性优势,可以通过RESTAPI动态定义模式,而Solr要求在schemas.xml中预定义模式(不过,我还没有看到对这种差异的具体确认)。除此之外,在如何使用模式方面是否存在实质性差异

  • 索引过滤器:针对特定搜索优化数据的方式是否存在差异?e、 g.我看到过类似Solr的字段复制和查询标记化过滤器之类的东西,它们增加了搜索算法的可定制性,但没有看到关于elasticsearch的类似信息,但也许它只是自动处理所有这些东西

  • 查询表达能力:查询DSL基本上与其他DSL一样具有表达能力,还是存在根本性差异

  • “增强”和/或结果定制:有哪些设施用于硬编码或篡改算法搜索结果

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

  • 刻面处理几乎是相同的,除了ES允许它也通过动态脚本,而Solr允许刻面分页。在Solr中还有一个方便的facetting模式,可以进行简单的商店搜索风格的facetting(注意:使用ES也相对容易,但不是开箱即用)。ES镶嵌面可以更强大,因为不需要将镶嵌面绑定到filterquery

  • 对于ES模式,可以通过API更新!或在文件中定义,并为类型指定。对于Solr,您可以根据索引创建一个配置文件。顺便说一句:对于动态字段,Solr的模式限制较少

  • ES只遗漏了自动预热功能(但这与性能相关,因此您不感兴趣;)和分组功能。否则,两者都使用类似的lucene材料。ES允许许多高级组合,就像在lucene中一样。父-子功能类似于group by功能,未在Solr IMO中实现

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

  • 不明白这一点:)

  • 我是否可以执行搜索或创建数据结构 在elasticsearch中,我不能在Solr中复制,反之亦然

    在ES中,percolator特性可能更难用Solr实现。
    在ES中,您还可以使用版本控制功能来实现乐观锁定,还可以使用索引别名和扫描查询来深入浏览索引-不确定Solr是否具有类似的功能。例如,别名有助于使搜索相对较短。

    re#5:我在某个地方读到,在Solr中,您可以对搜索算法进行结束运行,也就是说,您可以在不改变术语权重的情况下“修复”搜索结果。因此,例如,您可以说,只要查询包含特定术语,您就希望某个文档成为第一个结果,即使搜索算法通常不会返回该文档。不过,我从来没有看到过关于如何真正做到这一点的信息。嗯,我不确定。但一般来说,在索引和查询时可以进行增强。你是说这个吗?例如,请参阅ES讨论中的这一最新条目:顺便说一句,在ES中,脚本功能在我看来更高级,因为它可以提升:@ConnieDobbs:我相信您是指。(例如:“编辑助推”)不确定ES是否支持这一点