Как получить общее количество индексов - PullRequest
0 голосов
/ 28 февраля 2020

Используемые библиотеки: 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 Запрошенное число составляет всего 10 000, как получить общее количество?

1 Ответ

3 голосов
/ 28 февраля 2020

Попробуйте установить 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())
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...