錯誤解決:ElasticSearch SearchResponse的Hits[]總是比totalHits少一條記錄


在做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了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM