我有以下查询:
GET images/_search
{
"query":{
"bool":{
"must":[
{
"term":{
"appID.raw":"myApp"
}
}
]
}
},
"size":0,
"aggs":{
"perDeviceAggregation":{
"terms":{
"field":"deviceID",
"min_doc_count":50000
}
}
}
}
此查询返回“buckets”数组,但我想只返回数组的长度,而不是数组本身。
说明:此查询的目的是计算属于应用程序“myApp”的设备数量,具有超过50,000个图像。我不需要查询来返回这些设备,只是知道有多少设备。
答案 0 :(得分:0)
terms
aggregation返回存储桶 - 每个字段的唯一字词为1个存储区 - 其中每个存储区包含包含该字词的文档的计数。
听起来您想知道唯一字词数而不是每个字词的文档计数。这个概念称为cardinality
。
有一个different aggregation来确定基数。您的查询将如下所示:
GET images/_search
{
"query":{
"bool":{
"must":[
{
"term":{
"appID.raw":"myApp"
}
}
]
}
},
"size":0,
"aggs":{
"deviceIdCardinality":{
"cardinality":{
"field":"deviceID"
}
}
}
}
注意:基数计数是近似值。您可以使用聚合的precision_threshold
参数配置准确性。有关详细信息,请参阅文档。