【问题标题】:Solr vs Elasticsearch for nested documentsSolr vs Elasticsearch 用于嵌套文档
【发布时间】:2015-11-01 05:31:01
【问题描述】:

我一直在为我的项目使用 solr,但最近我遇到了 Elasticsearch,它似乎很有前途。我的项目需要处理嵌套文档的能力,我想知道哪一个做得更好。 Solr 最近刚刚添加了子文档,但它和 Elasticsearch 的一样好吗? Elasticsearch 可以同时查询父子节点吗?谢谢

【问题讨论】:

    标签: search solr elasticsearch


    【解决方案1】:

    我最近一直在研究这个主题,据我了解,ElasticSearch 在处理嵌套文档时让生活变得更轻松,尽管 Solr 也支持嵌套(但在查询方面不太灵活)。

    所以ElasticSearch的特点是:

    • “无缝”支持嵌套:您不必更改您的 嵌套文档结构或添加特定字段。但是,您需要 在映射中指示创建时嵌套了哪些字段 索引

    • 支持带有“nested”和“path”的嵌套查询:

    • 支持使用嵌套文档进行聚合和过滤:也可以通过 “嵌套”和“路径”。

    使用 Solr,您必须:

    • 通过添加_root_字段来修改您的schema.xml

    • 修改您的数据集,以便父文档和子文档具有特定的区别字段,特别是 childDocuments 以指示子文档(请参阅this question 的更多信息)

      李>
    • 嵌套文档的聚合和过滤如果不是不可能的话,肯定会非常复杂。

    此外,根本不支持嵌套字段。

    最近的 Solr 版本(5.1 及更高版本)最终可以配置为支持嵌套(包括您必须更改输入数据结构),但是,文档不是很清楚,并且 Internet 上没有太多信息,因为这些功能是最近的。

    最重要的是,在嵌套文档的意义上,ElasticSearch 可以做 Solr 可以做的所有事情,甚至更多,而且工作量更少,学习曲线更流畅。因此,在这种情况下,使用 ElasticSearch 似乎更合理。

    【讨论】:

      【解决方案2】:

      我不知道 Elastic Search,所以这总是 50% 的答案。 Solr 最适用于非规范化数据。但是,鉴于您有嵌套文档,您可以在两种情况下使用 solr:

      1. 具有子属性的父查询
      2. 查询父项的所有子项。

      您可以使用块连接来执行上述查询。即使您处理嵌套级别,solr 在内部也将它们作为非规范化进行管理。我的意思是,当父母有 2 个孩子时,你最终会在 solr 中得到三个高级文档。 solr 管理关系部分。

      【讨论】:

      • 再次感谢。我试过 Elasticsearch,它的准确性远远落后于 Solr。我会坚持使用 Solr。
      猜你喜欢
      • 2012-08-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-26
      相关资源
      最近更新 更多