Elasticsearch - 模拟外键行为

Tom*_*mer 3 elasticsearch

我在 Elasticsearch 中对文档进行建模时遇到问题,而关系数据库中的外键可以很轻松地解决我的问题。我越接近尝试建立亲子关系,但我的案例有多个父母对同一份文件(我可能会以错误的方式看待它)

考虑以下来自类型 person:
doc1 的 3 个文档:

{
  _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"
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

文档2:

{
  _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"
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

文档3:

{
  _id: 100
  "source":{
    "first_name": "mother1",
    "last_name": "last_name1",
    "age" : 40,
    "phone": "12212121212",
    .
    .
    "mother":{}
  }
}
Run Code Online (Sandbox Code Playgroud)

我的问题是当母亲更新她的姓氏或名字时。我是否需要找到所有文件,id 100是他们的母亲,并将他们的内部文件更改为正确的名字和姓氏?

这只是一个例子,我的情况是我需要用他们母亲的正确新名字更新 100 多个孩子。在关系数据库中,通过使用外键这会很容易。

我尝试使用此参考,但找不到解决我的问题的方法。

任何想法?

And*_*ann 5

看起来你在寻找这个: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
Run Code Online (Sandbox Code Playgroud)

现在对父文档的更改应该会导致所有子文档的更改。

新方面:这个插件可能对解决方案很有趣:http://siren.solutions/relational-joins-for-elasticsearch-the-siren-join-plugin/