Как получить общее количество результатов, когда setFrom используется вasticsearch QueryBuilders? - PullRequest
0 голосов
/ 24 декабря 2018

Я создаю нумерацию страниц с помощью упругого поиска QueryBuilders.Я использую setFrom, чтобы получить ограниченные результаты для нумерации страниц.но мне нужно общее количество результатов, чтобы создать общее количество ссылок на страницы в разбивке по результатам.Как я могу получить общее количество, прежде чем setFrom будет применен к запросу?или мне нужно снова написать тот же запрос, чтобы получить общее количество без setFrom и размера?

это мой запрос

BoolQueryBuilder query = QueryBuilders.boolQuery();
for (String key : brands) {
    query.must(QueryBuilders.matchQuery("brand", key));
}

// search term
query.must(QueryBuilders.queryStringQuery(pSearchTerm + "*")
        .lenient(true).field("name"));

// price range
query.filter(QueryBuilders.rangeQuery("unit_price").from(min)
        .to(max));

SearchResponse searchresponse = client.prepareSearch("product")
        .setTypes("product").setQuery(query).setFrom(from).setSize(20)
        .setExplain(true).execute().actionGet();

SearchHit[] results = searchresponse.getHits().getHits();

Ответы [ 4 ]

0 голосов
/ 24 декабря 2018

Возможно, вам придется выполнить еще один запрос, чтобы получить общее количество попаданий.Посмотрите: Подсчет количества документов с использованием Elasticsearch

0 голосов
/ 24 декабря 2018

Нет, вам не нужно снова писать запрос.Просто используйте

searchResponse.getHits().getTotalHits()

0 голосов
/ 24 декабря 2018

Объект SearchHits предоставляет глобальную информацию обо всех попаданиях.

Таким образом, вам нужно следующее, чтобы получить общее количество:

long totalCount = searchResponse.getHits().getTotalHits();

Вы можете посмотреть документацию для таких других нужд.

0 голосов
/ 24 декабря 2018

Номер, который вы ищете, это hits.total, который вы можете получить:

long total = searchresponse.getHits().getTotalHits();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...