如何计算数据库文档中存在的2个字段的所有唯一值组合,即实现与“基数”聚合提供的功能相同的功能,但是对于超过1个字段?
答案 0 :(得分:2)
您可以使用脚本来实现此目的。假设字段“#”不存在于两个字段的任何值中(您可以使用其他任何东西作为分隔符),那么您要查找的查询就是如下。请注意,脚本编写会带来性能损失。
{
"aggs" : {
"multi_field_cardinality" : {
"cardinality" : {
"script": "doc['<field1>'].value + '#' + doc['<field2'].value"
}
}
}
}
详细了解here。
答案 1 :(得分:2)
更好的解决方案是使用嵌套聚合,然后计算生成的桶。
"aggs": {
"Group1": {
"terms": {
"field": "Field1",
"size": 0
},
"aggs": {
"Group2": {
"terms": {
"field": "Field2",
"size": 0
}
}
}
}
}