日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

14. es 整合springboot

發布時間:2025/3/8 编程问答 16 豆豆
生活随笔 收集整理的這篇文章主要介紹了 14. es 整合springboot 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

2019獨角獸企業重金招聘Python工程師標準>>>

1.目的?

通過程序對es 進行增刪改查

?

2. 實現過程

2.1 搭建springboot項目

?

?

?

手動加入lombok 的jar

<dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.8</version><scope>provided</scope> </dependency>

?

2.2 增加

配置數據源

##本項目端口號 server.port=8888##es所在服務器地址 端口9300 spring.data.elasticsearch.cluster-nodes = localhost:9300

?

2.2.1 實體類 (很重要)

2.2.2 controller層

2.2.3 業務層

?

?

2.2.4 持久層

2.2.5?測試

?

?

es庫中效果

2.3 刪除

2.3.1 controller

2.3.2 業務層

?

?

2.3.3 測試

?

結果:

?

2.4 更新

這個操作與保存操作可以公用一個方法? ,當id相同的時候進行修改,不同的時候進行新增

2.5 查詢

2.5.1 基本查詢

2.5.1.1 查詢所有 不用任何條件

效果:

(1)controller層

(2) 業務層

這里用到了jackson

?

實現類

?

在處理數據的時候看一下返回的數據結構:

?

2.5.1.2?根據某個字段進行排序

效果

(1) controller層

(2) 業務層

接口:

實現類:

?

2.5.1.3?根據id查詢數據

?

(1)controller層

(2) 業務層

接口

實現類:

?

2.5.2? 自定義方法查詢

2.5.2.1 查詢name相等的用戶

效果:

代碼:

(1)controller層

(2)業務層

接口:

實現類:

(3) 持久層

2.5.2.2 查詢年齡相同 工作地點相同的人

效果:

(1)controller

(2) 業務層

接口

實現類:

持久層:

2.5.2.3??自定義方法Or查詢 查詢年齡=30 或 ?家住 深圳市的人

效果:

數據庫中的數據

?

(1)controller

(2) 業務層

接口:

?

?

實現類:

(3) 持久層

2.5.2.4?自定義方法Between查詢 ?查詢年齡<=29 age >=30的人

效果

(1)controller層

(2) 業務層

接口

實現類:

(3)持久層

2.5.2.5??自定義方法like查詢 ?查詢名字含有 小的查詢

效果:

(1) controller層

(2) 業務層

接口:

實現類:

(3)持久層

?

?

2.5.3 自定義查詢

2.5.3.1??matchQuery(會分詞? 表中字段類型需要keyword)?

注意

?

(1) controller層

(2) 業務層

接口

實現類:

(3) 持久層

不需要寫了

2.5.3.2?termQuery(不分詞 表中字段類型是text類型)

效果:

情況1:type="text"? ?"analyzer": "ik_max_word"

情況2:type="text"? ? 只能查詢一個字

(1)controller層

(2) 業務層

接口

實現類:

2.5.3.3 fuzzyQuery 模糊查詢 ? @Field(type = FieldType.Text) ?類型必須是這個類型

效果:

(1) controller層

(2) 業務層

接口:

實現類:

?

2.5.4 分頁查詢

效果:

(1)controller層

(2)業務層

接口:

實現類:

?

?

2.5.5 排序

?

?

2.5.6 聚合

?

項目中:

2.5.6.1?按某個字段分組

需求:分組查詢每個班級 學生數量

設計表:對于的統計的字段不能進行分組(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));// 1、添加一個新的聚合,聚合類型為terms,聚合名稱為brands,聚合字段為columnqueryBuilder.addAggregation(AggregationBuilders.terms(column).field(column));// 2、查詢,需要把結果強轉為AggregatedPage類型AggregatedPage<Student> aggPage = (AggregatedPage<Student>) this.esRepository.search(queryBuilder.build());// 3、解析// 3.1、從結果中取出名為brands的那個聚合,// 因為是利用String類型字段來進行的term聚合,所以結果要強轉為StringTerm類型StringTerms agg = (StringTerms) aggPage.getAggregation(column);// 3.2、獲取桶List<StringTerms.Bucket> buckets = agg.getBuckets();// 3.3、遍歷for (StringTerms.Bucket bucket : buckets) {HashMap<String, Object> map = new HashMap<>();// 3.4、獲取桶中的key,即班級名稱map.put("class", bucket.getKeyAsString());// 3.5、獲取桶中的文檔數量 既各個班級下學生數量map.put("num", bucket.getDocCount());//將數據放入listlist.add(map);}//數據處理為jsonString jsonData = JacksonUtils.obejectToJson(list);return jsonData; }

比較復雜? 晚上回來 寫唄

https://blog.csdn.net/zxc123e/article/details/79498113

https://www.cnblogs.com/dalaoyang/p/8990989.html

?

https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1&tn=baidu&wd=elasticsearch%E6%95%B4%E5%90%88springboot%20&oq=elasticsearch%25E6%2595%25B4%25E5%2590%2588springboot&rsv_pq=85bde8fb00023d6c&rsv_t=028bjx3W9VYdyYhoRpmL%2B35Z0ARouR0alx1Z3RuRjofd%2BAmE9sUEfdQQA3k&rqlang=cn&rsv_enter=0

轉載于:https://my.oschina.net/u/4132381/blog/3059455

總結

以上是生活随笔為你收集整理的14. es 整合springboot的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。