可以像这样包含子聚合metadata:
GET kibana_sample_data_flights/_search
{
"size": 0,
"query": ...,
"aggs": {
"by_delay": {
"terms": {
"field": "FlightDelay"
},
"meta": { <---
"key": "val"
}
},
"by_cancelled": {
"terms": {
"field": "Cancelled"
},
"meta": { <---
"key": "val"
}
}
}
}现在,有几十个这样的子aggs和一些共享元数据。虽然它只适用于aggs,但我不介意将它放在query部分的某个地方。那么有没有每个搜索体的元数据字段呢?
我在想,我可以将所有这些子aggs封装在一个match_all过滤器组中:
{
"size": 0,
"query": ...,
"aggs": {
"meta_parent": {
"filter": {
"match_all": {}
},
"meta": {
"shared": "meta"
},
"aggs": {
"by_delay": ...,
"by_cancelled": ...
}
}
}
}有没有更好的方法?
发布于 2020-07-20 11:46:29
如果您没有任何query部件,我可以利用global aggregation,如下所示:
{
"size": 0,
"aggs": {
"meta_parent": {
"global": {},
"meta": {
"shared": "meta"
},
"aggs": {
"by_delay": ...,
"by_cancelled": ...
}
}
}
}否则,您对filter/match_all聚合的建议也可以起作用:
{
"size": 0,
"aggs": {
"meta_parent": {
"filter": {
"match_all": {}
},
"meta": {
"shared": "meta"
},
"aggs": {
"by_delay": ...,
"by_cancelled": ...
}
}
}
}https://stackoverflow.com/questions/62941595
复制相似问题