我在Elasticsearch中有以下格式的多条记录:
{
"_id": "<id created by elasticsearch>"
"trend_id": "5573d345b60c4be1a6337d18ad097d6c",
"item_state": 1
}
对于相同的"item_state"
,可能有多个"trend_id"
的值。
我想获得最多"trend_id"
个不同的"item_state"
的数量。因此,如果"item_state"
的可能值为1,2,3,那么我想要:
1:Count(Distinct(trend_id)),其中1是最大item_state(按Trend_id分组)
2:Count(Distinct(trend_id)),其中2是最大item_state(按Trend_id分组)
3:Count(Distinct(trend_id)),其中3是最大item_state(按Trend_id分组)
我该如何实现?
我在下面的查询中尝试过,它按"trend_id"
分组,并为"item_state"
找到最大的"trend_id"
。
POST index-*/_search
{
"size": 0,
"aggs": {
"my_group_by_trend_id": {
"terms": {"field": "trend_id"},
"aggs": {
"my_max_states": {
"max": {"field": "item_state"}
}
}
}
}
}
但是我想进一步汇总这些结果,并找出1是最大次数,2是最大次数和3是最大次数的次数。
示例:
{“ trend_id”:“ A”,“ item_state”:1}
{“ trend_id”:“ A”,“ item_state”:2}
{“ trend_id”:“ A”,“ item_state”:3}
{“ trend_id”:“ B”,“ item_state”:1}
{“ trend_id”:“ B”,“ item_state”:1}
{“ trend_id”:“ C”,“ item_state”:3}
预期:
{1:1,2:0,3:2}
所以基本上,我想对先前聚合产生的结果进行聚合。