在Elasticsearch中,我们使用术语方面和术语聚合来应对上述问题。不幸的是,这肯定适用于少量数据。但我们正在处理大约1000万份文件的数据。
因此,当我们通过使用聚合(设置"大小":0)或方面(使用"排除")来查询以获取字段(例如公司字段)的所有唯一值时),我们无法在一段时间内获得整个结果。似乎elasticsearch需要花费大量时间来响应,最终导致节点故障。
此过程的唯一目的是计算一个字段中存在多少个唯一值(例如,公司,独特公司的数量)。
任何建议都会很明显。
答案 0 :(得分:3)
如果您使用Elasticsearch 1.1.0或更高版本,则可以尝试使用cardinal aggregations 估算不同的计数。
在您的情况下,简单查询将如下所示:
POST /{yourIndex}/{yourType}/_search
{
"aggs" : {
"company_count" : {
"cardinality" : {
"field" : "company.company_raw",
"precision_threshold": 10000
}
}
}
}