go - 如何获取索引中的文档总数
问题描述
使用的库:https ://pkg.go.dev/github.com/olivere/elastic/v7
res, _ := orm.Es.Search("pk").Do(context.Background())
fmt.Println("res",res.TotalHits()) // output:10000
count: 3628800 查询的数字只有10000,怎么得到总数?
解决方案
尝试将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())
推荐阅读
- javascript - 修复安装 NPM 包的上游依赖冲突
- html - 文本与表格中单选按钮序列的垂直对齐
- javascript - 如何在 nextjs api 中从浏览器读取 cookie
- r - 用于选择列的 R DataTable 函数
- javascript - 我将如何在画布上实现缩放移动原点?
- .net-core - 无法从程序集“Microsoft.AspNetCore.Hosting”加载类型“上下文”
- firebase - 在 Firebase onDataChange 中更改 JavaFX 节点不起作用
- javascript - 快乐算法的功能没有正确重复
- c++ - 使用指向抽象基类的指针时,是否有更有效的方法来获取派生类的类型?
- react-native - 构建 Apk 文件与 react-native 中的调试 APK 文件工作不同