目前我们在弹性搜索中执行查询(或更准确地说是设计映射)时遇到问题,这有助于我们对关系问题执行查询,我们没有用非文档解决来自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"
}
现在我们要重命名'#34;深夜灾难"更确切地说,并使所有参考文献保持最新。
我们怎么能接近这个? ES中是否还有其他选项,比如RavenDB中的包含?
到目前为止,嵌套对象或子父母关系对我们没有帮助。
答案 0 :(得分:0)
非正规化怎么样?如果我们来自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"
}
]
}
]