gpt4 book ai didi

elasticsearch - 在 Elasticsearch 中使用多对多关系

转载 作者:行者123 更新时间:2023-12-04 22:18:22 27 4
gpt4 key购买 nike

目前我们有一个问题是在elasticsearch中执行查询(或者更准确地说是设计映射),它帮助我们对关系问题执行查询,我们没有以非文档导向的思维解决来自 sql。

我们想在不同的 Elasticsearch 条目之间创建多对多关系。我们需要它来编辑一次条目并保持所有使用的更新。

为了描述这个问题,我们将使用以下简单的数据模型:

    Broadcast           Content
------------ ---------
Id Id
Day Title
Contents [] Description

所以我们有两种不同类型的索引,广播和内容。一个广播可以有很多内容,单个内容也可以是不同广播的一部分(例如重复)。

像 JSON:

index/broadcasts
{
"Id": "B1",
"Day": "2014-10-15",
"Contents": [
"C1",
"C2"
]
}
{
"Id": "B2",
"Day": "2014-10-16",
"Contents": [
"C1",
"C3"
]
}
index/contents
{
"Id": "C1",
"Title": "Wake up",
"Description": "Morning show with Jeff Bridges"
}
{
"Id": "C2",
"Title": "Have a break!",
"Description": "Everything about Android"
}
{
"Id": "C3",
"Title": "Late Night Disaster",
"Description": "Comedy show"
}

现在我们想将“深夜灾难”重命名为更准确的名称,并使所有引用资料保持最新。

我们如何解决这个问题? ES 中是否有其他选项,例如 RavenDB 中的 includes?

到目前为止,嵌套对象或父子关系对我们没有帮助。

最佳答案

反规范化呢?如果我们从 SQL 的思维方式来看似乎很难,但请尝试一下,即使有数百万个文档,LUCENE 索引也可以提供帮助,并且重命名将是一个批处理作业。

[
{
"Id": "B1",
"Day": "2014-10-15",
"Contents": [
{
"Title": "Wake up",
"Description": "Morning show with Jeff Bridges"
},
{
"Title": "Have a break!",
"Description": "Everything about Android"
}
]
},
{
"Id": "B2",
"Day": "2014-10-16",
"Contents": [
{
"Title": "Wake up",
"Description": "Morning show with Jeff Bridges"
},
{
"Title": "Late Night Disaster",
"Description": "Comedy show"
}
]
}
]

关于elasticsearch - 在 Elasticsearch 中使用多对多关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22835145/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com