如何统计Elastic中唯一的值?

时间:2017-07-21 04:28:09

标签: elasticsearch aggregation

所以场景是我有一个索引,其中包含我尝试实现的内容的值。

{"organisation":"TestOrg","deployment_name":"testDeployment","timestamp":1    499724427000,"running_instances":2}

这是如何存储弹性的。部署名称可以是任何内容,我尝试做的是计算任何部署的运行实例。

这是我到目前为止所尝试过的。

我的想法是,我会用条款和基数做一个日期直方图我想要的价值如下。

{
"aggs" : {
    "vms_over_time" : {
        "date_histogram" : {
            "field" : "timestamp",
            "interval" : "2h"
        },
    "aggs": {
        "termsagg" : {
            "termf":{ "field" : "deployment_name"}
        },
        "cardcheck":{
            "cardinality" : {
                "cardf" : { "field":"running_instances"} 
            }
            }
         }

      }
  }

}

2 个答案:

答案 0 :(得分:0)

不确定我的要求是否正确。使用基数agg,您可以计算running_instances中不同元素的数量,因此,如果您有1,2,3,4,1,2,3,4,则响应将为4

您是否可能只想使用sum聚合来计算正在运行的实例数?即使这不适用于您当前的数据模型。也许最小/最大和平均值可能有帮助吗?

答案 1 :(得分:0)

如果有人像我一样愚蠢,基本上算上我需要的字段并算出总金额。我需要使用日期直方图,该日期直方图具有条款的子聚合,其在running_instances上进行了总和的子聚合。

我遇到的问题是条款,因为我想要使用的字段是文本,所以我创建了一个关键字。