ElasticSearch用外键映射两个SQL表

假设我有下表:

`title`

- id

- name

- tv_series_id

Example:

id=1, name="Episode 2", tv_series_id=4

我可以使用以下JSON结构在ElasticSearch中轻松映射它:

{

"ID": 1,

"Name": "Episode 2",

"TVSeriesID": 4

}

如果然后有第二个表称为tv_seriestitle表在外键中引用,例如:

`tv_series`

- id

- name

Example:

id=4, name='Friends'

然后,我将如何在Elasticsearch中映射该关系?是否有一种通用方法可以在Elasticsearch中映射具有一个或多个外键关系的两个表?例如,通过执行特定的join语句?

回答:

在SQL世界中,一切都与保持表之间的关系有关,以使数据永远不会重复两次(或尽可能少地重复),因此是主键/外键方法。

通常,在NoSQL世界中,尤其是在Elasticsearch中,索引和类型之间没有明确的关系。有多种方法可以在文档本身之间创建关系(例如,父子对象或嵌套对象),但是没有JOIN的概念。

取而代之的是,主要思想是以一种使文档“可用于”执行特定用例的方式来对数据进行非规范化。人们不应该害怕保留数据的冗余副本。通常,您需要问自己以下两个问题(还有许多其他问题):

  1. 您需要向用户显示哪些数据/字段?
  2. 您需要执行哪些查询来检索以上数据?

在您强调的简单情况下,我肯定会选择一个包含两个表的JOIN的文档:

{

"ID": 1,

"Name": "Episode 2",

"TVSeriesID": 4,

"TVSeriesName": "Friends"

}

标题Friends将包含在236个文档中没什么大不了的,它的想法是您可以检索任何情节,并且其中包含您需要了解的所有数据。

以上是 ElasticSearch用外键映射两个SQL表 的全部内容, 来源链接: utcz.com/qa/415927.html

回到顶部