我知道弹性支持孩子/父母关系,但孩子只能有一个父母。
parent_id
,我怎么能像所有父母一样加载所有孩子的内心点击?如果要从同一个父级获取有关子级的所有信息,请使用查询:
GET /my-index/_search
{
"query": {
"parent_id": {
"type": "my-child",
"id": "1"
}
}
}
这将带回所有 join 字段设置为my-child
(children) 且父 id 等于 1的文档。
有趣的是,我没有询问过不止一位家长。如果你想从多个父母那里得到所有的孩子,我可以想到一个应该查询:
GET /my-index/_search
{
"query": {
"should": [
{
parent_id: {
type: my-child,
id: 1
}
},
{
parent_id: {
type: my-child,
id: 2
}
}
]
}
}
您在映射中为上述两个查询定义my-child
的连接字段的值在哪里my-join-field
。检查完整的父子设置以获取更多信息。如果您没有在映射中定义连接字段,它将引发错误。
如果你想从所有的父母那里得到所有的孩子,你可以简单地:
GET /my-index/_search
{
"query": {
"match":{
"my-join-field": "my-child"
}
}
}
这将带回所有没有父母的孩子。
您也可以使用Has 父查询,但请记住,此特定查询的性能很慢。
如果你想获得所有的文档,父母和孩子:
GET /my-index/_search
{
"query": {
"match_all":{}
}
}
但是,如果您有不属于父母或子女关系的其他文件:
GET /my-index/_search
{
"query": {
"must":{
"exists":{
"field": "my-join-field"
}
}
}
}
这将排除所有没有该字段的文档 my-join-field
请记住,ElasticSearch 并不是要像 SQL 那样的关系型 ER 数据库。父子关系只是一种 1-n 关系。不支持关系 nn。
希望这是有帮助的!:D
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句