当前位置: 首页 > 面试题库 >

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

家志学
2023-03-14
问题内容

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

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

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

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


问题答案:

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


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

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

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

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



 类似资料:
  • 问题内容: 我正在编写资产管理应用程序。它允许用户通过向资产添加html控件(例如文本字段,选择菜单等)来存储任意资产属性。然后,该属性的JSON表示成为存储在beddb中的资产JSON文档的一部分。资产在ouchdb中具有以下结构: 我不确定将属性放入数组是否是允许基于属性值搜索资产的最佳方法。将属性直接附加到资产作为属性会更好吗?我正在用Elasticsearch做实验。如果我尝试按原样存储文

  • 问题内容: 可以说我有以下映射: 然后,我对父文档进行“ _geo_distance”排序,并能够对“ site.point”上的文档进行排序。但是,我还希望嵌套位置在父文档中按“ _geo_distance”排序。 这可能吗?如果是这样,怎么办? 问题答案: 不幸的是,没有(至少现在还没有)。 ElasticSearch中的查询仅标识与该查询匹配的文档以及它们的匹配程度。 要了解嵌套文档的用途,

  • 问题内容: 我正在尝试使用以下映射搜索文档: 我想在“ naam”,“ omschrijving”等中进行搜索,但也想在嵌套文档“ kenmerken”的动态映射中进行搜索,因此我创建了两个搜索查询,但它们似乎都不起作用。 我应该使用布尔还是过滤器?或两者结合? 我什至靠近吗? 问题答案: 由于需要解决方案,因此我决定创建一个单独的字符串字段,在其中分解“ kenmerken”字段。目前,此方法可

  • 问题内容: 我必须在弹性中插入一个json数组。链接中可接受的答案建议在每个json条目之前插入标题行。答案是2岁,市场上是否有更好的解决方案?我需要手动编辑json文件吗? 问题答案: 好的,那么您可以使用简单的Shell脚本来完成一些非常简单的操作(请参见下文)。这个想法是不必手动编辑文件,而是让Python进行编辑并创建另一个文件格式符合端点期望的文件。它执行以下操作: 首先,我们声明一个小

  • 我是elasticsearch的新手,对如何进行过滤器、查询和聚合有一些想法,但不确定如何解决下面的问题。我希望能够从下面显示的文档中只查询公司的最新交付(日期和crate_quantity)。我不确定如何去做。有没有办法使用最大聚合从每个文档中只提取最近的交付?

  • 问题内容: TLDR;如何批量格式化JSON文件以提取到Elasticsearch? 我试图将一些NOAA数据吸收到Elasticsearch中,并一直在利用NOAAPythonSDK。 我编写了以下Python脚本来加载数据并以JSON格式存储。 JSON输出: 该脚本解决了我遇到的一些格式化问题,我的下一个障碍是尝试对其进行格式化,以便可以在elasticsearch中利用批量导入功能。我偶然