在做ElasticSearch查詢操作的時候,發現Hits[].length總是比totalHits.value少1。
代碼如下:
SearchRequest request = new SearchRequest("indexName"); SearchSourceBuilder builder = new SearchSourceBuilder(); BoolQueryBuilder boolQueryBuilder = new BoolQueryBuilder(); builder.query(QueryBuilder.matchPhraseQuery("fieldName","searchStr")); builder.from(1); builder.size(10); request.source(builder); SearchResponse response = restHighLevelClient.search(request,RequestOptions.DEFAULT); // 獲取查詢總數 System.out.println(response.getHits().getTotalHits().value); // 獲取查詢分頁數量 System.out.println(response.getHits().getHits().length);
輸出結果:
第二行總是比第一行少1。
按照常規分頁的思想,其實應該是從第一頁開始,然后跟上每頁的數據,沒想到這里from(1)直接把第一條數據給跳過了。
解決辦法:
直接from(0)就ok了。