使用的庫: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 關注
- 181 瀏覽
添加回答
舉報
0/150
提交
取消