假设有酒店和房间,是父子文档
查询酒店(只返回父文档)(查询店铺名称中带”客栈“,房间名称带有“小虫子”的{店铺})
POST bnb_home/_search
{
"query": {
"bool":{
"must":[
{"match":{"data.shopName":"客栈"}},
{
"has_child" : {
"type" : "room",
"query" : {
"bool":{
"must":[
{"match":{"data.roomName":"小虫子"}}
]
}
}
}
}
]
}
}
}
如果要对子文档的数量进行筛选,则使用 min_children ,以及 max_children 进行筛选。
如果希望对子文档进行更高的评分,可以使用:score_mode : max
查询酒店房间(只返回子文档)(查询店铺名称中带”客栈“,房间名称带有“小虫”的{房间})
POST bnb_home/_search
{
"query": {
"bool":{
"must":[
{"match":{"data.roomName":"小虫"}},
{
"has_parent" : {
"parent_type" : "shop",
"query" : {
"bool":{
"must":[
{"match":{"data.shopName":"客栈"}}
]
}
}
}
}
]
}
}
}
如果希望同时返回,则带参数 inner_hits 。