一:先看一下es的語句以及查詢結果:
我這邊使用的條件是is_device要么是工控要么是資產
二:java代碼部分
關於es的操作,java里面不需要添加mapper層,只要在service以及controller層里面操作就OK了
1:在service里面添加接口
1 //首頁的工控資產詳情在es里面查詢結果 2 List<Object> getBaseCurrencyByEs();
2:在實現類里面實現邏輯以及步驟,es查詢基本就那7步
1 @Override 2 public List<Object> getBaseCurrencyByEs() { 3 //存放最終數據 4 ArrayList<Object> list = new ArrayList<>(); 5 //1.創建搜索請求對象 6 SearchRequest searchRequest = new SearchRequest("mid_assets_shanxi").types("mid_assets_shanxi"); 7 //2.設置搜索源配置 8 SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder(); 9 //3.構建QueryBuilder對象指定查詢方式和查詢條件 10 QueryBuilder queryBuilder = QueryBuilders.termQuery("is_device.keyword", "通用設備"); 11 //4,將QuseryBuilder對象設置到SearchSourceBuilder對象中 12 searchSourceBuilder.query(queryBuilder); 13 //5,將SearchSourceBuilder設置到SearchRequest中 14 searchRequest.source(searchSourceBuilder); 15 try { 16 //6,調用方法查詢數據 17 SearchResponse searchResponse = restHighLevelClient.search(searchRequest); 18 System.err.println("es語句:" + searchRequest); 19 //7,解析返回結果 20 SearchHits hits = searchResponse.getHits(); 21 //得到數據 22 SearchHit[] searchHits = hits.getHits(); 23 for (SearchHit hit : searchHits){ 24 Map<String, Object> result = hit.getSourceAsMap(); 25 list.add(result); 26 } 27 } catch (IOException e) { 28 e.printStackTrace(); 29 } 30 return list; 31 }
3:在controller層里面調用接口
1 @GetMapping("getBaseCurrencyByEs") 2 @ApiOperation("通用資產詳情的數據") 3 public Result getBaseCurrencyByEs(){ 4 List<Object> baseIndustrial=bigscreenStatisticsAllService.getBaseCurrencyByEs(); 5 return Result.ok(baseIndustrial); 6 }
三:測試接口是否查詢到了數據: