es里父子文档,对子文档聚合,然后对聚合的结果过滤,写出对应的dsl语句
时间: 2024-03-28 16:41:52 浏览: 75
好的,针对您的问题,可以使用以下的 DSL 语句进行查询:
```
{
"query": {
"has_parent": {
"type": "parent_type",
"query": {
"bool": {
"must": [
{
"has_child": {
"type": "child_type",
"query": {
"match_all": {}
},
"inner_hits": {}
}
}
]
}
}
}
},
"aggs": {
"agg_name": {
"terms": {
"field": "field_name"
}
}
},
"post_filter": {
"range": {
"field_name": {
"gte": 10,
"lte": 100
}
}
}
}
```
其中,`has_parent` 查询用于查找父文档类型为 `parent_type` 的文档,然后使用 `has_child` 查询对子文档类型为 `child_type` 的文档进行聚合,同时使用 `inner_hits` 参数返回聚合结果的子文档信息。聚合操作使用 `terms` 聚合对 `field_name` 字段进行分组,并在 `post_filter` 中使用 `range` 过滤器对 `field_name` 字段的值进行过滤,只保留在 `[10, 100]` 范围内的结果。
阅读全文