- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
是将冗余数据存储在索引中更好,还是拥有两个索引然后交叉引用它们更好?即,用户想在剧院看电影。
由于用户有兴趣按影院查找电影,我们可以有一个带有电影 nested_type 的影院索引:
// Here, movies field will be a Nested Type, not Object Type.
eclient.index({
index: 'myindex',
type: 'theater',
id: 1,
body: {
name: "Grand Cinema",
description: "Come watch movies!",
movies: [
{
title: "Red November",
description: "A submarine hunt",
rated: "R",
score: 10.0
},
{
title: "Cinderbrella",
description: "A burnt umbrella",
rated: "PG",
score: 8.8
}
]
}
});
这使得按剧院显示电影的简短列表变得容易,因为数据在剧院是非规范化的。
我们还可以有一个电影索引,其中包含有关电影的更多详细信息:
eclient.index({
index: 'myindex',
type: 'movie',
id: 1,
body: {
title: "Red November",
description: "A submarine hunt",
rated: "R",
score: 10.0,
actors: ["Bob", "Alice", "Carol"],
// other details...
}
});
因此,当用户单击电影以获取更多信息时,我可以查询电影索引并获取其详细信息(即 Actor )。
如您所见,剧院拥有大量冗余数据。如果电影获得更新的字段,重新索引也很痛苦。将有两个地方需要重建索引:剧院索引中的电影和电影索引本身。即,电影获得更新的分数。
我想我可以改变它,让剧院索引包含一堆电影 ID,让电影包含一堆剧院 ID:
// theater index
type: 'theater',
id: 1,
body: {
name: ...
description: ...
movies: [ 1, 2 ]
}
// movie index
type: 'movie',
id: 1,
body: {
title: ...
description: ...
theaters: [ 1, 2, 3]
}
但在这种情况下,我该如何高效地查询影院的电影信息呢?我将不得不获取电影 ID,然后在电影索引上逐一查询它们,以获取一些有限的电影信息以显示在影院页面上。但是,如果特定电影的某个字段发生变化,那么重建索引的工作就会少很多。
哪个是更好的解决方案?我更倾向于认为后者,因为即使电影很少更改其数据,重新索引持有该特定电影的每个剧院并重新索引电影索引本身可能是计算能力的巨大浪费(瓶颈?)。
第三种解决方案是让剧院保存电影 ID,然后只查询这些 ID 的 Postgres 数据库。虽然这可能比通过电影索引单独查询它们要慢?
最佳答案
您正在寻找的是父子关系类型。
在同一索引下,您可以将一种类型定义为另一种类型的父类型。在这种情况下,您可以将所有电影文件保留为电影类型,将剧院文件保留为剧院类型。这种方法的优点是
您可以找到有关父子的更多信息here
父子关系相对于嵌套文档的优势
关于javascript - elasticsearch:保留冗余(非规范化)数据或保留用于交叉引用的 id 列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27884360/
我有下面提供的“示例代码”,我觉得这很多余,并且想请您与我一起解释是否有任何更少冗余的方法来处理以下代码。 public interface Bars { FOO1 FOO1 = (FOO1)
我们刚刚测试了一个由 2 个服务器组成的 AppFabric 集群,我们在其中删除了“领导”服务器。第二个服务器对它的任何请求超时并出现错误: Microsoft.ApplicationServer.
我正在设计一个关系数据库 - 底层是 MySQL - DBDesigner 4 . 我有 3 个表:module、page 和 lang。每个模块属于一个页面,每个页面都有特定的语言: 外键 pag
我的 Fraction 程序运行流畅,但 NetBeans IDE 告诉我以下 if 是多余的: public boolean equals(Object other) { Fraction bo
下面的代码显然是多余的,但根据我的经验,我经常使用这种模式。有没有更好的方法在 python 中执行此操作? if re.search("at (\d{1,2}):\d{2}", p): a=
我有一个用具体示例说明的一般性问题。当所有组件对象都已测试时,您建议对复合对象进行多少测试? 作为具体示例,请考虑下面的 NullTerminatedStringReader。它从字节缓冲区中读取一个
if ( a > b) { return true; } return false; 对于上面的代码,Netbeans 给出了 “Redundant if statement” 警告并建议将其更改
当我添加一些约束时,例如: create table Test( IDTest int primary key, Credit int not null constraint Credit
此代码适用于 Microchip 的 PIC32MX 微处理器。他们的编译器本质上是 GCC 3.4。 我倾向于使用 GCC 的 __packed__ attribute将位域打包到一个 union
已关闭。这个问题是 not reproducible or was caused by typos 。目前不接受答案。 这个问题是由拼写错误或无法再重现的问题引起的。虽然类似的问题可能是 on-top
我正在为我的应用程序使用apns通知,为此,我将apns设备 token 存储在我的sql数据库中。 问题在于,每次用户删除或安装该应用程序时,它都会生成一个新的设备 token ,并将其存储在数据库
Action Keyname Type Unique Packed Column Cardinality Collation Null Comment Edit Dro
我正在开发一个使用 ARM Cortex-M0 处理器的项目。在这个项目中,我需要提供计时器支持(CMSDK (SSE-200)计时器)。 因此,在 vector 表中,在 TIMER0_IRQn 表
有没有写的理由 corsFilter.setAllowedOrigins(new HashSet(Arrays.asList("*"))); 其中allowedOrigins在ReSTLet框架中的定
我正在创建一个包含 4 个链接的 HTML/CSS 页面, Home.html Details.html ContactMe.html AboutUs.html 我想在所有关联的 HTML 页面中将其
我试图理解并使用其他人编写的代码,但由于我对 typedef 经验不多。 , 我有时会感到困惑。 有两个不同的头文件,一个继承另一个,并且在两个文件上声明相同的typedef。 为什么会出现冗余,如何
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
我有一个用于改造的 POJO 类。 public class AppData(){ String a; String b; String c;
我想知道: 编写这段代码: DataRow[] g = new DataRow[1] ; var t=new StringBuilder().AppendFormat("{0}", g[0]["a
只是一个性能问题...... 假设我有 5 个类,每个类都引用了 System.Data 和一个自己开发的库。这 5 个类是类库的一部分,最终将被构建并发布到一些 Web 应用程序作为引用。 通过将引
我是一名优秀的程序员,十分优秀!