RestHighLevelClient查詢ElasticSearch


是一個分頁查詢

    /** * 查詢 * @param keyword * @param pageNo * @param pageSize * @return * @throws IOException */ public List<Map<String ,Object>> searchPage(String keyword, int pageNo, int pageSize) throws IOException { // 指定要查詢的索引 SearchRequest searchRequest = new SearchRequest("phone_info"); // 設置分頁條件 SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder(); pageNo = pageNo == 0 ? 1 : pageNo; pageSize = pageSize == 0 ? 10 : pageSize; searchSourceBuilder.from(pageNo); searchSourceBuilder.size(pageSize); // 輸入的關鍵字匹配的字段 TermQueryBuilder termQueryBuilder = QueryBuilders.termQuery("title.keyword", keyword); searchSourceBuilder.query(termQueryBuilder); searchSourceBuilder.timeout(new TimeValue(60, TimeUnit.SECONDS)); // 執行 searchRequest.source(searchSourceBuilder); SearchResponse search = restHighLevelClient.search(searchRequest, RequestOptions.DEFAULT); ArrayList<Map<String,Object>> list = new ArrayList<>(); if (search.getHits().getHits().length!=0){ for (SearchHit documentFields : search.getHits().getHits()) { list.add(documentFields.getSourceAsMap()); } return list; }else { HashMap<String, Object> map = new HashMap<>(); map.put("code",404); map.put("msg","沒有相關數據"); list.add(map); return list; } } } 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44

其實前面的都差不多,最大的不同的地方在QueryBuilders調用的方法。

  1. termQuery(字段.keyword,"value"):單條件精確查詢。
  2. termsQuery(字段.keyword,"value1","value2","..."):多條件精確查詢,取並集。
  3. rangeQuery("字段").from("start").to("end"); 范圍查詢,查詢指定字段處於start到end范圍的值,閉區間(不包括start、end)。
  4. rangeQuery("字段").from("start", false).to("end", false); 開區間范圍查詢。
  5. rangeQuery("字段").lt("value"); 小於value的值,小於等於是lte、大於是gt、大於等於是gte
  6. 組合多條件查詢,將上面的可以進行組合,使用:must必須、mustNot必須不、should類似於or進行連接。
  7. wildcardQuery("字段","*value*"):模糊查詢,支持通配符。
  8. queryStringQuery("value").field("字段");不使用通配符的模糊查詢,左右匹配。
  9. multiMatchQuery("字段","value1","value2"):多字段模糊查詢


免責聲明!

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



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