es 父子文档,同时返回父子文档时, inner_hits 参数比较重要。
它有4个参数:
from | 偏移量 |
size | 指定返回的数量,默认为3 |
sort | 排序,默认以评分排序 |
name | inner_hits 别名,如果缺省,则默认为type名 |
GET inndex_name/_search
{
"query": {
"has_child" : {
"type" : "product", // 子类型
"query" : {
"match_all" : {}
},
"max_children": 10,
"min_children": 1,
"score_mode" : "min",
"inner_hits": { // 返回其子文档,如果没有这个参数则只返回父文档
"size": 10
}
}
}
}
如果使用默认值,则传递一个空的对象 ,也就是 {} 作为 inner_hits即可。
多个查询时,会报错,[inner_hits] already contains an entry for key [product] ,这里的 product 是默认的子类型type,所以也会使用 product 作为子类型名,而一个搜索多个 has_child 并且为同一个type时,就会报上述的错误,此时使用 inner_hits 的 name 字段使用别名,比如 product2。然后在返回值中,判断 product 或 product2 就是返回的 inner_hits。