繁体   English   中英

Solr vs Elasticsearch用于嵌套文档

[英]Solr vs Elasticsearch for nested documents

我一直在为项目使用solr,但是最近我遇到了Elasticsearch,这似乎非常有前途。 我的项目需要具有处理嵌套文档的能力,我想知道哪个文档更好。 Solr最近刚刚添加了子文档,但是它和Elasticsearch一样好吗? Elasticsearch可以一次对父级和子级执行查询吗? 谢谢

我最近一直在研究这个主题,据我了解,ElasticSearch使处理嵌套文档的工作变得轻松很多,尽管Solr也支持嵌套(但在查询中不太灵活)。

因此,ElasticSearch的功能是:

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

  • 支持带有“嵌套”和“路径”的嵌套查询:

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

使用Solr,您将必须:

  • 通过添加_ root _字段来修改schema.xml

  • 修改您的数据集,以使父文档和子文档具有特定的区分字段,尤其是childDocuments以指示子文档(有关此问题,请参阅)

  • 如果不是不可能的话,对嵌套文档的聚合和过滤也将非常复杂。

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

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

最重要的是,就嵌套文档而言,ElasticSearch可以完成Solr可以做的所有事情,并且可以用更少的精力和更流畅的学习曲线来做更多的事情。 因此,在这种情况下,使用ElasticSearch似乎更合理。

我不了解Elastic Search,所以这始终是50%的答案。 Solr最适合非规范化数据。 但是,鉴于您已经嵌套了文档,则可以在两种情况下使用solr:

  1. 查询具有子级属性的父级
  2. 查询父母的所有孩子。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM