2013-10-22 151 views
1

Elasticsearch嵌套文件(很棒)。我想用它来存储消息(顶层文档)及其作者(嵌套文档)。在Elasticsearch中,多个顶级文档可以共享单个嵌套文档吗?

由于一个作者可以有许多许多消息 - 作者的一个版本可以作为多个消息的子代被引用吗?

这样,如果您在一个地方更新作者数据,那么它会在他们被引用的任何地方更新。

注意:这涉及到:How to do a join in Elasticsearch -- or at the Lucene level - 这里的答案也可能解决这个问题。

回答

4

您可能需要使用_parent映射来看看:http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/mapping-parent-field.html

这可以让你创建一个消息的作者和一个单独的类型的类型(与_parent类型的作者),那么指数分别文件并随着时间的推移添加到消息中。您只需更新作者的单个版本,以影响与该作者有关的所有消息的查询。

要实现具有特定作者的消息查询,您需要使用has_parent查询或过滤器。或者相反,使用has_child来查找具有特定消息的作者。

  • has_child导致父文档具有匹配查询,在有匹配

我一直在使用这种更动态表单查询父文档子文档

  • has_parent结果子文档而不是嵌套的文档,对于我来说(它适用于查询和方面)运行良好,但在加载任何类型的文档之前,必须注意定义映射,因为在事实似乎不起作用之后添加_parent映射我。迄今为止我还没有管理过重新索引。

  • 相关问题