【发布时间】:2026-02-02 17:30:01
【问题描述】:
我已经尝试了很长时间,但看不到问题。如果在 ES 方面有更多经验的人能提示我正确的方向,我会非常高兴。我有一个父类型(大学)和一个子类型(课程)。课程有 3 级嵌套聚合(主题组)。现在,我试图显示有多少大学在大学查询中提供具有各个学科组的课程。
这是我的映射:
indexes:
studiengaenge:
index_name: studiengaenge_dev
settings:
index:
analysis:
analyzer:
lc_term:
type: custom
tokenizer: keyword
filter: lowercase
types:
college:
mappings:
id: ~
course:
mappings:
id: ~
name: ~
subjectgroups:
type: "nested"
properties:
name: { "type": "string", "index": "analyzed", "analyzer": "lc_term" }
area:
type: "nested"
properties:
name: { "type": "string", "index": "analyzed", "analyzer": "lc_term" }
field:
type: "nested"
properties:
name: { "type": "string", "index": "analyzed", "analyzer": "lc_term" }
_parent:
type: "college"
查询:
GET college/_search?search_type=count
{
"query": {
"has_child": {
"type": "course",
"query": {
"filtered": {
"query": {
"match_all": {}
},
"filter": {
"bool": {
"must": [
{
"nested": {
"path": "subjectgroups",
"filter": {
"terms": {
"subjectgroups.name": [
"lehramt"
]
}
}
}
}
]
}
}
}
}
}
},
"aggs": {
"children": {
"children": {
"type": "course"
},
"aggs": {
"fachgruppen": {
"nested": {
"path": "course.subjectgroups"
},
"aggs": {
"filtered": {
"filter": {
"terms": {
"subjectgroups.name": [
"lehramt"
]
}
},
"aggs": {
"fachgruppe": {
"terms": {
"field": "subjectgroups.name"
},
"aggs": {
"reverse_nested": {
"reverse_nested": {},
"aggs": {
"doc_count_college": {
"cardinality": {
"field": "_parent"
}
}
}
},
"studienbereich": {
"nested": {
"path": "course.subjectgroups.area"
},
"aggs": {
"studienbereich": {
"terms": {
"field": "subjectgroups.area.name"
},
"aggs": {
"reverse_nested": {
"reverse_nested": {},
"aggs": {
"doc_count_college": {
"cardinality": {
"field": "_parent"
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
结果:
{
"took": 7,
"timed_out": false,
"_shards": {
"total": 1,
"successful": 1,
"failed": 0
},
"hits": {
"total": 123,
"max_score": 0,
"hits": []
},
"aggregations": {
"children": {
"doc_count": 12289,
"fachgruppen": {
"doc_count": 15029,
"filtered": {
"doc_count": 4582,
"fachgruppe": {
"doc_count_error_upper_bound": 0,
"sum_other_doc_count": 0,
"buckets": [
{
"key": "lehramt",
"doc_count": 4582,
"reverse_nested": {
"doc_count": 3786,
"doc_count_college": {
"value": 124
}
},
"studienbereich": {
"doc_count": 4582,
"studienbereich": {
"doc_count_error_upper_bound": 0,
"sum_other_doc_count": 0,
"buckets": [
{
"key": "schulische fächer",
"doc_count": 3938,
"reverse_nested": {
"doc_count": 3399,
"doc_count_college": {
"value": 130
}
}
},
{
"key": "berufliche fachrichtungen",
"doc_count": 357,
"reverse_nested": {
"doc_count": 315,
"doc_count_college": {
"value": 105
}
}
},
{
"key": "sonderpädagogik, inklusive pädagogik",
"doc_count": 287,
"reverse_nested": {
"doc_count": 287,
"doc_count_college": {
"value": 32
}
}
}
]
}
}
}
]
}
}
}
}
}
}
问题是,即使只有 123 个结果(学院),二级学科组的聚合告诉我有 130 个学院“key”:“schulische fächer”。 任何帮助是极大的赞赏。谢谢,汉内斯
【问题讨论】:
标签: elasticsearch