如何在 elasticsearch 中按存储桶键对计数进行值



我有一个字段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就足以达到顶级列表。

相关内容

  • 没有找到相关文章

最新更新