您当前的位置: 首页 > 慢生活 > 程序人生 网站首页程序人生
elasticSearch基数聚合的精密控制
发布时间:2021-09-02 22:45:15编辑:雪饮阅读()
事实上在上篇中虽然实现了elasticSearch的非关键字段的基数聚合。
但是细心看看你会发现聚合的结果实际上并不是很精准。
那么这个官方也说了,这种计数本来也不是特别的精准的,只是一个近似计数。
精密控制
此聚合支持precision_threshold选项:
precision_threshold选项允许用内存来换取准确性,并定义一个唯一计数,低于该计数预计将接近准确。高于此值,计数可能会变得更加模糊。支持的最大值为 40000,高于此数字的阈值将与阈值 40000 具有相同的效果。默认值为3000。
一个请求:
请求正文:
{
"aggs": {
"name_count": {
"cardinality": {
"field": "name",
"precision_threshold":100
}
}
}
}
响应正文:
{
"took": 2,
"timed_out": false,
"_shards": {
"total": 2,
"successful": 2,
"skipped": 0,
"failed": 0
},
"hits": {
"total": {
"value": 7,
"relation": "eq"
},
"max_score": null,
"hits": []
},
"aggregations": {
"name_count": {
"value": 6
}
}
}
实际上这里你会发现precision_threshold选项的值已经比它默认的3000低的多了,但是精准度还是不太高呢。
参考文献:https://www.elastic.co/guide/en/elasticsearch/reference/7.14/search-aggregations-metrics-cardinality-aggregation.html
关键字词:elasticSearch,基数聚合,精密控制