我在Elasticsearch中建模文档时遇到问题,而关系数据库中的外键很容易解决我的问题。 我越接近尝试父子关系,但我的案例有多个父母同一文件(我可能会以错误的方式看待它)
考虑类型为人的以下3个文件:
DOC1:
{
_id: 10
"source":{
"first_name": "child1_first_name",
"last_name": "child1_last_name",
"age" : 10,
"phone": "0505055050",
.
.
"mother":{
"id": 100
"firt_name": "mother1",
"last_name": "last_name1"
}
}
}
DOC2:
{
_id: 11
"source":{
"first_name": "child2_first_name",
"last_name": "child2_last_name",
"age" : 12,
"phone": "878787878",
.
.
"mother":{
"id": 100
"firt_name": "mother1",
"last_name": "last_name1"
}
}
}
doc3的:
{
_id: 100
"source":{
"first_name": "mother1",
"last_name": "last_name1",
"age" : 40,
"phone": "12212121212",
.
.
"mother":{}
}
}
我的问题是母亲更新她的姓氏或名字。 我是否需要找到所有文件,即id 100是他们的母亲,并将他们的内部文件更改为正确的名字和姓氏?
这只是一个例子,我的情况是我需要用他们母亲的正确和新名称更新100多个孩子。 在关系数据库中,使用外键可以很容易。
我尝试使用此reference但无法找到解决问题的方法。
有什么想法吗?
答案 0 :(得分:3)
看起来你在找这个: Elasticsearch中的父文档和子文档 https://www.elastic.co/guide/en/elasticsearch/guide/current/parent-child.html
因此,您首先需要调整mapping
,以便mother
可以用作父级和类型本身 - >更多关于https://www.elastic.co/guide/en/elasticsearch/guide/current/parent-child-mapping.html
然后按https://www.elastic.co/guide/en/elasticsearch/guide/current/indexing-parent-child.html。
中所述进行索引PUT /index_name/child/10?parent=100
现在对父文档的更改应该会导致所有子文档发生更改。
Side new:此插件可能对解决方案很有用:http://siren.solutions/relational-joins-for-elasticsearch-the-siren-join-plugin/