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

Sha*_*try 5 java facet aggregation elasticsearch

在 Elasticsearch 中,我们使用了术语 facet 和术语聚合来解决上述问题。不幸的是,这肯定适用于小数据集。但我们正在处理大约 1000 万份文件的数据。

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

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

任何建议将是可观的。

Mar*_*ler 3

如果您使用Elasticsearch 1.1.0或更高版本,您可以尝试使用基数聚合来估计非重复计数。

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

POST /{yourIndex}/{yourType}/_search
{
    "aggs" : {
        "company_count" : {
            "cardinality" : {
                "field" : "company.company_raw",
                "precision_threshold": 10000
            }
        }
    }
} 
Run Code Online (Sandbox Code Playgroud)