使用的库:https ://pkg.go.dev/github.com/olivere/elastic/v7res, _ := orm.Es.Search("pk").Do(context.Background())
fmt.Println("res",res.TotalHits()) // output:10000count: 3628800 查询的数字只有10000,怎么得到总数?
1 回答

森栏
TA贡献1810条经验 获得超5个赞
尝试将track_total_hits
搜索选项设置为true
.
通常,如果不访问所有匹配项,就无法准确计算总命中数,这对于匹配大量文档的查询来说代价高昂。
track_total_hits parameter
允许您控制应如何跟踪点击总数。鉴于通常有一个命中数的下限就足够了,例如“至少有 10000 个命中”,因此默认设置为 10,000。这意味着请求将准确计算总命中数,最高可达 10,000 次命中。如果您在某个阈值之后不需要准确的命中数,那么加快搜索速度是一个很好的权衡。设置为 true 时,搜索响应将始终跟踪准确匹配查询的命中数
官方文档中有一篇很棒的文章描述了它是什么。
通过调用TrackTotalHits
方法在您的代码中启用它:
res, _ := orm.Es.Search("pk").TrackTotalHits(true).Do(context.Background())
或者,如果您只需要总数,只需使用Count API:
res, _ := orm.Es.Count("pk").Do(context.Background())
- 1 回答
- 0 关注
- 235 浏览
添加回答
举报
0/150
提交
取消