es 父子查询 排序
时间: 2023-07-20 07:03:38 浏览: 114
对于 ES 的父子查询,可以使用 `has_parent` 或 `has_child` 查询来实现。
例如,假设有一个索引包含父文档 "users" 和子文档 "orders",其中每个 "order" 文档都有一个 "price" 字段,我们想要按照 "price" 字段对父文档进行排序,可以使用以下查询:
```json
{
"query": {
"has_child": {
"type": "order",
"score_mode": "max",
"query": {
"match_all": {}
}
}
},
"sort": [
{
"price": {
"order": "desc",
"mode": "max",
"nested_path": "order",
"nested_filter": {
"match_all": {}
}
}
}
]
}
```
这个查询会找到所有有子文档 "order" 的父文档 "user",并按照子文档 "order" 的 "price" 字段进行降序排序。
其中,`has_child` 查询用于找到拥有子文档的父文档,`score_mode` 参数指定了如何计算父文档的分数,这里选择了 "max",表示使用最大值作为父文档的分数;`sort` 参数用于指定排序规则,其中 "price" 表示按照子文档 "order" 的 "price" 字段排序,"order" 表示子文档的类型,"nested_path" 表示子文档的嵌套路径,"nested_filter" 用于过滤子文档。
阅读全文