# 值计数聚合（Value Count Aggregation）

原文链接：

[https://www.elastic.co/guide/en/elasticsearch/reference/5.x/search-aggregations-metrics-valuecount-aggregation.html](https://www.elastic.co/guide/en/elasticsearch/reference/5.x/search-aggregations-metrics-valuecount-aggregation.html)

译文链接：[值计数聚合](http://www.apache.wiki/pages/viewpage.action?pageId=10030251)

贡献者：[昆仑子](/display/~liangchuankun)，[ApacheCN](http://www.apache.wiki/display/~apachecn)，[Apache中文网](http://www.apache.wiki/display/~apachechina)

## 值计数聚合（Value Count Aggregation）

single-value 度量聚合就是计算从文档中 提取/获取（extracted）的值的数量。这些值可以从文档指定的 字段/属性（field）中提取，或者从给定的脚本中生成。特别的（Typically），该聚合器可以与其他single-value聚合结合使用。例如，当计算一个对计算得到的平均值的值的数量感兴趣的`avg`查询时。

```
POST /sales/_search?size=0
{
    "aggs" : {
        "types_count" : { "value_count" : { "field" : "type" } }
    }
}
```

响应（Response）：

```
{
    ...
    "aggregations": {
        "types_count": {
            "value": 7
        }
    }
}
```

聚合的名字（type_count 上面）也作为key使聚合结果可以从响应中重新获取。

## 脚本（Script）

计算脚本生成的值：

```
POST /sales/_search?size=0
{
    "aggs" : {
        "type_count" : {
            "value_count" : {
                "script" : {
                    "inline" : "doc['type'].value"
                }
            }
        }
    }
}
```

这将使用`painless` 脚本语言将 script 参数解释为内联脚本，没有脚本参数。使用如下的语法来使用文件脚本（file script）：

```
POST /sales/_search?size=0
{
    "aggs" : {
        "types_count" : {
            "value_count" : {
                "script" : {
                    "file": "my_script",
                    "params" : {
                        "field" : "type"
                    }
                }
            }
        }
    }
}
```

提示：对于索引脚本需要将file参数替换为id参数。