【发布时间】:2016-02-02 06:49:19
【问题描述】:
如何对多个字段执行聚合?也就是说,我想列出“field1”和“field2”上的术语聚合结果,而不是单独列出,而是在同一个存储桶中。在elasticsearch中可以吗?
【问题讨论】:
-
尝试使用嵌套聚合
标签: elasticsearch
如何对多个字段执行聚合?也就是说,我想列出“field1”和“field2”上的术语聚合结果,而不是单独列出,而是在同一个存储桶中。在elasticsearch中可以吗?
【问题讨论】:
标签: elasticsearch
到目前为止,在 Elasticsearch 中还没有直接的方法来进行多字段聚合。但是您可以使用以下脚本实现所需的结果:
{
"aggs": {
"mixed_aggs": {
"terms": {
"script": "doc['field1'].values + doc['field2'].values"
}
}
}
}
您可以在blog 中阅读有关上述案例的更多信息
【讨论】:
如下所述使用sub-aggregation:
{
"size" : 0,
"aggs": {
"group_By_field1": {
"terms": {
"field": "field1"
},
"aggs" : {
"group_By_Field2" : {
"terms": {
"field": "field2"
}
}
}
}
}
}
【讨论】:
这可以使用如下脚本来完成:
{
"aggs": {
"my_agg": {
"terms": {
"script": "doc['field_1'].values + doc['field_2'].values"
}
}
}
}
注意:性能应该被认为是组合多个字段进行聚合是有代价的。
阅读here
【讨论】: