Почему searchResult.TotalHits () отличается от len (searchResult.Hits.Hits)? - PullRequest
0 голосов
/ 19 февраля 2019

Я работаю с golangastic 5 API для выполнения запросов в ElasticSearch.Я проверяю количество обращений с помощью searchResult.TotalHits (), и оно дает мне большое число (более 100), но когда я пытаюсь перебрать совпадения, оно дает только 10 объектов.Также, когда я проверяю переменную len (searchResult.Hits.Hits), я получаю 10.

Я пробовал разные запросы, когда выбираю менее 10 сущностей, и это работает хорошо.

query = elastic.NewBoolQuery()
ctx := context.Background()

query = query.Must(elastic.NewTermQuery("key0", "term"),
    elastic.NewWildcardQuery("key1", "*term2*"),
    elastic.NewWildcardQuery("key3", "*.*"),
    elastic.NewRangeQuery("timestamp").From(fromTime).To(toTime),
)
searchResult, err = client.Search().Index("index").
    Query(query).Pretty(true).Do(ctx)
fmt.Printf("TotalHits(): %v", searchResult.TotalHits()) //It gives me 482
fmt.Printf("length of the hits array: %v", len(searchResult.Hits.Hits)) //It gives 10
for _, hit := range searchResult.Hits.Hits {
    var tweet Tweet
    _ = json.Unmarshal(*hit.Source, &tweet)
            fmt.Printf("entity: %s", tweet) //It prints 10 entity
}

Что я делаю не так?Есть ли пакеты в SearchResult или что может быть решением?

1 Ответ

0 голосов
/ 19 февраля 2019

Это не указано в вашем вопросе, поэтому, пожалуйста, прокомментируйте, если вы используете другую клиентскую библиотеку (например, официальный клиент), но похоже, что вы используете github.com/olivere/elastic.Исходя из этого предположения, вы видите размер набора результатов по умолчанию, равный 10. Число TotalHits - это количество документов, соответствующих вашему запросу;число Hits - это количество, которое было возвращено в вашем текущем результате, которым вы можете манипулировать, используя Size, Sort и From.Size задокументировано как:

Размер - количество возвращаемых результатов поиска.По умолчанию 10.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...