參考node
http://www.javashuo.com/article/p-hbqxmonq-eu.htmlspring
經過程序對es 進行增刪改查數據庫
手動加入lombok 的jarjson
<dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.8</version> <scope>provided</scope> </dependency>
配置數據源:springboot
##本項目端口號 server.port=8888 ##es所在服務器地址 端口9300 spring.data.elasticsearch.cluster-nodes = localhost:9300
es庫中效果服務器
結果:數據結構
這個操做與保存操做能夠公用一個方法 ,當id相同的時候進行修改,不一樣的時候進行新增elasticsearch
效果:ide
(1)controller層測試
(2) 業務層
這裏用到了jackson
實現類
在處理數據的時候看一下返回的數據結構:
效果
(1) controller層
(2) 業務層
接口:
實現類:
(1)controller層
(2) 業務層
接口
實現類:
效果:
代碼:
(1)controller層
(2)業務層
接口:
實現類:
(3) 持久層
效果:
(1)controller
(2) 業務層
接口
實現類:
持久層:
效果:
數據庫中的數據
(1)controller
(2) 業務層
接口:
實現類:
(3) 持久層
效果
(1)controller層
(2) 業務層
接口
實現類:
(3)持久層
2.5.2.5 自定義方法like查詢 查詢名字含有 小的查詢
效果:
(1) controller層
(2) 業務層
接口:
實現類:
(3)持久層
注意:
(1) controller層
(2) 業務層
接口
實現類:
(3) 持久層
不須要寫了
效果:
狀況1:type="text" "analyzer": "ik_max_word"
狀況2:type="text" 只能查詢一個字
(1)controller層
(2) 業務層
接口
實現類:
效果:
(1) controller層
(2) 業務層
接口:
實現類:
效果:
(1)controller層
(2)業務層
接口:
實現類:
項目中:
需求:分組查詢每一個班級 學生數量
設計表:對於的統計的字段不能進行分組(type=「keyword」)
(1) controller層
(2) 業務層
接口:
實現類:
//4.6.1 根據某個字段進行分組查詢 @Override public String polymerizationByColumn(String column) throws JsonProcessingException { //造一個list用於存放數據 ArrayList<Map<String, Object>> list = new ArrayList<>(); NativeSearchQueryBuilder queryBuilder = new NativeSearchQueryBuilder(); // 不查詢任何結果 queryBuilder.withSourceFilter(new FetchSourceFilter(new String[]{""}, null)); // 一、添加一個新的聚合,聚合類型爲terms,聚合名稱爲brands,聚合字段爲column queryBuilder.addAggregation( AggregationBuilders.terms(column).field(column)); // 二、查詢,須要把結果強轉爲AggregatedPage類型 AggregatedPage<Student> aggPage = (AggregatedPage<Student>) this.esRepository.search(queryBuilder.build()); // 三、解析 // 3.一、從結果中取出名爲brands的那個聚合, // 由於是利用String類型字段來進行的term聚合,因此結果要強轉爲StringTerm類型 StringTerms agg = (StringTerms) aggPage.getAggregation(column); // 3.二、獲取桶 List<StringTerms.Bucket> buckets = agg.getBuckets(); // 3.三、遍歷 for (StringTerms.Bucket bucket : buckets) { HashMap<String, Object> map = new HashMap<>(); // 3.四、獲取桶中的key,即班級名稱 map.put("class", bucket.getKeyAsString()); // 3.五、獲取桶中的文檔數量 既各個班級下學生數量 map.put("num", bucket.getDocCount()); //將數據放入list list.add(map); } //數據處理爲json String jsonData = JacksonUtils.obejectToJson(list); return jsonData; }
連接:https://pan.baidu.com/s/1hgXLhHs75CF35EI3cwnvfw 提取碼:eg03