在弹性搜索索引

时间:2016-01-28 02:58:31

标签: elasticsearch

下面是一个虚构的简化用例;但现实世界的用例模仿了这种多对多关系。

说有工单 - >谁有病人。工作单内的患者实体有患者的SSN,姓名,地址,年龄,体重,疾病等。

今天工作单id = 1,患者社会安全号码= 111-11-1111,姓名= John Doe进入系统。 John Doe的病=发烧。

2个月后工作单id = 2,患者社会安全号码= 111-11-1111同一患者姓名= John Doe进入系统。这次John Doe的病=背部疼痛

现在请忽略审计跟踪要求,以免我们因原始问题而脱轨。

现在工作单1可以与其他工作单相关.3。基本上工作单< - >病人是多对多的关系。同样在数据库工作单中,患者是完全相同的数据结构,具有不同的属性和值。真实世界的用例有更多细节,但与此问题无关。

在关系数据库工单中< - >患者关系通过联接表维护。

设计弹性搜索索引文档结构;以下就是我的想法;

拥有一种类型的单一索引"患者",

用于患者数据:

{
  "patient_ssn" : "111-11-1111",
  "patient_fname" : "John",
  "patient_lname" : "Doe",
  "related_workorders" [ 2345,8979]
}

" workorder"

的第二种类型
{
 "wo_id" : 2345,
 ....
}

现在查询找到患者SSN为111-11-1111的所有工单。因此,将有两个查询:首先查找患者数据:然后查找来自patient.related_workorders的所有值的所有工单数据; 。所以在这种情况下;最终输出将作为父母的工作顺序(包含所有数据)并且患者有它的孩子。

两个查询正在使用提及here的应用程序端连接。在这种情况下,单个患者记录将经常更新。在这种特殊情况下使用应用程序端连接有什么缺点吗?

我知道提到here的其他选项。还看过this thisthis,但似乎应用程序端加入最适合我的用例?

0 个答案:

没有答案