我有一个字段history
,用于存储带有ID的JSON对象数组。我想获取前 10 个 ID,其中包含具有特定 ID 的 JSON 对象的值计数。
"group_by_id": {
"terms": {
"field": "history.some_id"
},
"aggs": {
"absolut": {
"value_count": {
"field": "history.some_id" // should count per bucket by bucket key (ID)
}
}
}
}
history
字段如下所示
{
"some_id": 471741,
...
},
{
"some_id": 471745,
...
},
...
我得到了这些存储桶,我希望count.value
使用key
来过滤它的结果。
"group_by_id": {
"doc_count_error_upper_bound": 0,
"sum_other_doc_count": 0,
"buckets": [
{
"key": 471741, // count by this ID
"doc_count": 5,
"absolut": {
"value": 20 // this value is not correct
}
},
{
"key": 471745,
"doc_count": 2,
"absolut": {
"value": 17
}
},
...
我想要的输出是存储桶,这些存储桶仅对历史记录条目进行计数,其some_id就像按存储桶分组键一样。这可能吗?也许你知道一个关键字,我可以找到解决方案。
我认为我试图做的是针对我在 elasticsearch 中糟糕的数据设计的一种奇怪的解决方法。我为此创建了一个自己的索引,一个term
就足以达到顶级列表。