一尘不染

在Elasticsearch中,多个顶级文档可以共享一个嵌套文档吗?

elasticsearch

Elasticsearch具有嵌套文档(出色)。我想用它来存储消息(顶级文档)及其作者(嵌套文档)。

由于一个作者可以拥有许多条消息-可以将一个版本的Author引用为多条消息的子级吗?

这样,如果您在一个地方更新Author数据,它将在所有引用它们的地方更新。

注意:这与以下内容有关:如何在Elasticsearch中或在Lucene级别进行联接-此处的答案也可以解决该问题。


阅读 294

收藏
2020-06-22

共1个答案

一尘不染

您可能希望使用_parent映射进行查看:http :
//www.elasticsearch.org/guide/en/elasticsearch/reference/current/mapping-
parent-
field.html

这使您可以为作者创建一个类型,为消息创建一个单独的类型(作者的_parent类型),然后分别为文档建立索引并随时间添加到消息中。您只需要更新作者的单个版本,即可影响对该作者的所有邮件的查询。

要查询特定作​​者的邮件,您需要使用has_parent查询或过滤器。反之,使用has_child查找带有某些消息的作者。

  • has_child导致父文档中的子文档与查询匹配
  • has_parent在子文档中具有与查询匹配的父文档

我一直在使用这种更具动态性的表单,而不是使用嵌套文档,它对我来说效果很好(对于查询和构面而言),但是在加载该类型的任何文档之前,必须谨慎定义映射,因为_parent在事实之后添加了映射似乎不适合我。到目前为止,重新索引一直是我无法管理的事情。

2020-06-22