Elasticsearch,如何获取字段的所有唯一值和总唯一值的计数?

时间:2014-08-20 06:35:14

标签: java elasticsearch aggregation facet

在Elasticsearch中,我们使用术语方面和术语聚合来应对上述问题。不幸的是,这肯定适用于少量数据。但我们正在处理大约1000万份文件的数据。

因此,当我们通过使用聚合(设置"大小":0)或方面(使用"排除")来查询以获取字段(例如公司字段)的所有唯一值时),我们无法在一段时间内获得整个结果。似乎elasticsearch需要花费大量时间来响应,最终导致节点故障。

此过程的唯一目的是计算一个字段中存在多少个唯一值(例如,公司,独特公司的数量)。

任何建议都会很明显。

1 个答案:

答案 0 :(得分:3)

如果您使用Elasticsearch 1.1.0或更高版本,则可以尝试使用cardinal aggregations 估算不同的计数。

在您的情况下,简单查询将如下所示:

POST /{yourIndex}/{yourType}/_search
{
    "aggs" : {
        "company_count" : {
            "cardinality" : {
                "field" : "company.company_raw",
                "precision_threshold": 10000
            }
        }
    }
}