如何在elasticsearch中按桶密钥计算值

时间:2018-03-20 13:55:59

标签: elasticsearch elasticsearch-5

我有一个字段history,它存储一个带有ID的JSON对象数组。我想获得具有特定ID的JSON对象的值计数的前10个ID。

"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的历史条目,就像按桶密钥分组一样。那可能吗?也许您知道一个关键字我可以找到解决方案。

1 个答案:

答案 0 :(得分:0)

我认为我试图做的是弹性搜索中我的错误数据设计的一个奇怪的解决方法。我为此创建了一个自己的索引,term足以实现一个顶级列表。