请教 aggs 中使用 terms 和 cardinality 遇到的问题

Elasticsearch | 作者 adow | 发布于2018年09月12日 | 阅读数:2170

我在 KIbana 中运行了一个查询,先按 `room_id` 分组,然后根据 `member_id` 计算用户数:
 
GET wxdata/_search?
{
"size":0,
"query": {
"bool": {
"must": {
"term": {
"action": "wxlive_live_view"
}
}
}
},
"aggs": {
"rooms": {
"terms":{
"field": "payload.room_id.keyword"
}
},
"aggs": {
"uv": {
"cardinality": {
"field": "member_id.keyword"
}
}
}
}
}
结果提示:
 
{
"error": {
"root_cause": [
{
"type": "named_object_not_found_exception",
"reason": "[19:13] unable to parse BaseAggregationBuilder with name [uv]: parser not found"
}
],
"type": "named_object_not_found_exception",
"reason": "[19:13] unable to parse BaseAggregationBuilder with name [uv]: parser not found"
},
"status": 400
}

但是我发现反过来的操作却是可以的,用 `member_id` 分组,然后再用 `room_id` 来计算(虽然这么做没什么意意义,我只是随便试试):
 
GET wxdata/_search?
{
"size":0,
"query": {
"bool": {
"must": {
"term": {
"action": "wxlive_live_view"
}
}
}
},
"aggs": {
"rooms": {
"terms":{
"field": "member_id.keyword"
},
"aggs": {
"room": {
"cardinality": {
"field": "payload.room_id.keyword"
}
}
}
}
}
}

请问,这是什么原因呢?
已邀请:

elasticStack - 90后it大数据男

赞同来自: adow

你对比一下两张图就会发现一些端倪, 你第一张图terms之后跟了一个 } }, 第二张图跟了 },很明显第一张图的写法是错误的。

adow

赞同来自:

😓原来只是这样,我还以为是遇到了什么奇怪的问题,其实是第二个 aggs 放错了位置而已。谢谢

要回复问题请先登录注册