Попробуйте установить track_total_hits
для параметра поиска значение true
.
Обычно общее число попаданий не может быть точно рассчитано без посещения всех совпадений, что является дорогостоящим для запросов, которые соответствуют множеству документы. track_total_hits parameter
позволяет вам контролировать, как следует отслеживать общее количество попаданий. Учитывая, что часто бывает достаточно иметь нижнюю границу количества обращений, например, «есть как минимум 10000 обращений», по умолчанию установлено значение 10000. Это означает, что запросы будут подсчитывать общее количество попаданий с точностью до 10000 обращений. Это хороший компромисс для ускорения поиска, если вам не нужно точное число попаданий после определенного порога.
Если задано значение true, ответ поиска всегда будет отслеживать количество совпадений, соответствующих запросу. точно
В официальной документации, описывающей, что это такое, есть отличная статья .
Включите его в своем коде, вызвав метод TrackTotalHits
:
res, _ := orm.Es.Search("pk").TrackTotalHits(true).Do(context.Background())
Или, если вам нужен только общий счет, просто используйте API подсчета :
res, _ := orm.Es.Count("pk").Do(context.Background())