我使用父子关系建模数据。我希望能够使用内部命中从父母那里获取一个特定的孩子,这是我对内部命中定义的理解。
我的映射是:
{
"mappings": {
"parent_type": {
"properties": {
"num_prop": {
"type": "integer"
},
"str_prop": {
"type": "string"
}
}
},
"child_type": {
"_parent": {
"type": "parent_type"
},
"properties": {
"child_num": {
"type": "integer"
},
"child_str": {
"type": "string"
}
}
}
}
}
我的数据是:
{"index":{"_type":"parent_type","_id":1}}
{"num_prop":1,"str_prop":"hello"}
{"index":{"_type":"child_type","_id":1,"_parent":1}}
{"child_num":11,"child_str":"foo"}
{"index":{"_type":"child_type","_id":2,"_parent":1}}
{"child_num":12,"child_str":"bar"}
{"index":{"_type":"parent_type","_id":2}}
{"num_prop":2,"str_prop":"goodbye"}
{"index":{"_type":"child_type","_id":3,"_parent":2}}
{"child_num":21,"child_str":"baz"}
{"index":{"_type":"child_type","_id":4,"_parent":2}}
{"child_num":13,"child_str":"foo"}
如上所示,身份1的父母有两个孩子" foo"并且" bar"和父母2也有一个孩子" foo"。现在我想要fooh foo和它的父1 - 我试图使用内部命中。
{
"query": {
"has_child": {
"type": "child_type",
"query": {
"match": { "child_str": "foo"}
} }
},
"inner_hits": {
"parent_type" : {
"type" : {
"parent_type" : {
"query" : {
"match" : {"str_prop" : "hello"}
}
}
}
}
}
}
然而,这不起作用。有人可以告诉我这里有什么问题吗?
谢谢和问候, 普里亚
答案 0 :(得分:1)
答案是:
{
"query": {
"filtered": {
"query": {
"match": { "str_prop": "hello"}
},
"filter":{
"has_child": {
"type": "child_type",
"query" : {
"filtered": {
"query": { "match_all": {}},
"filter" : {
"and": [
{"match": {"child_str": "foo"}}
]
}
}
},
"inner_hits" : {}
}
}
}
}
}