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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

Spring Data ElasticSearch的操作

發布時間:2023/12/20 javascript 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Spring Data ElasticSearch的操作 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

依賴

<!--springdata elasticsearch--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-elasticsearch</artifactId></dependency>

配置文件

#配置es單機版 集群版在后面多加一些節點就行了 spring:elasticsearch:rest:uris:- http://xx.xxx.xx.xx:9200

自動注入模板類對象

//注入springdataelasticsearch給我們提供的操作es的模板類對象@Autowired //有的 @Autowired 會自動注入失敗 改成 @Resource 就行了private ElasticsearchRestTemplate elasticsearchRestTemplate;

創建索引并設置映射

/*** 創建索引,并設置映射**/public void createIndex(){//創建索引boolean isIndex = elasticsearchRestTemplate.createIndex(TbItem.class);System.out.println("創建索引:"+isIndex);//創建映射boolean isMapping = elasticsearchRestTemplate.putMapping(TbItem.class);System.out.println("創建映射:"+isMapping);}

刪除索引

/*** 刪除索引*/public void deleteIndex(){//根據指定索引的名稱來刪除boolean isDelete = elasticsearchRestTemplate.deleteIndex("product_item");System.out.println(isDelete);//根據POJO的字節碼對象刪除boolean b = elasticsearchRestTemplate.deleteIndex(TbItem.class);System.out.println(b);}

往es中批量增加數據

/*** 往es中批量增加數據*/public void addAllData(){List<TbItem> all = tbItemMapper.findAll();ArrayList<IndexQuery> indexQueries = new ArrayList<>();for (TbItem tbItem : all) { // 通過IndexQueryBuilder創建IndexQuery對象IndexQuery indexQuery = new IndexQueryBuilder().withObject(tbItem).build();indexQueries.add(indexQuery);} // 相當于使用PUT請求,往es中新增數據elasticsearchRestTemplate.bulkIndex(indexQueries);}

往es中批量增加數據

/*** 往es中新增單條數據*/public void addData(){TbItem item = new TbItem();item.setId(23423);item.setTitle("迪奧口紅");item.setPrice(399);item.setNum(3);item.setSellPoint("涂了之后,她好,我也好");//通過IndexQuery構建對象IndexQuery indexQuery = new IndexQueryBuilder().withObject(item).build();//elasticsearchRestTemplate.index(indexQuery);}

/*** 刪除es中的數據*/public void deleteData(){//單條刪除:根據idString delete = elasticsearchRestTemplate.delete(TbItem.class, "605616");//刪除成功會返回被刪除商品的idSystem.out.println(delete);}

/*** 修改數據*/public void updateData() throws IOException {//封裝要修改的數據(將你要修改的內容先寫好)UpdateRequest updateRequest = new UpdateRequest();updateRequest.doc(XContentFactory.jsonBuilder().startObject().field("title","香奈兒口紅").endObject());//根據id找到你要修改的目標數據 將數據修改UpdateQuery updateQuery = new UpdateQueryBuilder().withUpdateRequest(updateRequest).withClass(TbItem.class).withId("23423").build();UpdateResponse update = elasticsearchRestTemplate.update(updateQuery);}

全搜索

/*** 全搜索(魔鬼搜索) 但是默認只會搜出來第一頁的十條數據*/public void machData(){/*在SpringData中定義了搜索的接口matchAll-->mathchAllQuery()match-->mathchQuery()range-->rangeQuery()*/SearchQuery searchQuery =new NativeSearchQuery(QueryBuilders.matchAllQuery());List<TbItem> tbItems = elasticsearchRestTemplate.queryForList(searchQuery, TbItem.class);for (TbItem t : tbItems) {System.out.println(t);}}

條件搜索:IK分詞

/*** 條件搜索:IK分詞*/public void ikMatchData(){SearchQuery searchQuery =new NativeSearchQuery(QueryBuilders.matchQuery("title","口紅"));List<TbItem> tbItems = elasticsearchRestTemplate.queryForList(searchQuery, TbItem.class);for (TbItem t : tbItems) {System.out.println(t);}}

短語搜索:沒有任何分詞

/*** 短語搜索:沒有任何分詞*/public void matchPhraseData(){SearchQuery searchQuery =new NativeSearchQuery(QueryBuilders.matchPhraseQuery("title","海爾(Haier)HM-M209手機"));List<TbItem> tbItems = elasticsearchRestTemplate.queryForList(searchQuery, TbItem.class);for (TbItem t : tbItems) {System.out.println(t);}}

term搜索

/*** term搜索*/public void termData(){SearchQuery searchQuery =new NativeSearchQuery(QueryBuilders.termsQuery("title","阿爾卡特"));List<TbItem> tbItems = elasticsearchRestTemplate.queryForList(searchQuery, TbItem.class);for (TbItem t : tbItems) {System.out.println(t);}}

范圍搜索

/*** 范圍搜索*/public void testRange(){SearchQuery searchQuery =new NativeSearchQuery(QueryBuilders.rangeQuery("price").gte(900).lte(3000));List<TbItem> tbItems = elasticsearchRestTemplate.queryForList(searchQuery, TbItem.class);for (TbItem t : tbItems) {System.out.println(t);}}

多條件搜索:must,should,must_not

/*** 多條件搜索:must,should,must_not*/public void testMulti(){//多條件的封裝器BoolQueryBuilder builder = QueryBuilders.boolQuery();List<QueryBuilder> must = builder.must();//全部都滿足must.add(QueryBuilders.matchQuery("sell_point","很好看"));must.add(QueryBuilders.rangeQuery("price").gte(900).lte(3000));SearchQuery searchQuery =new NativeSearchQuery(builder);List<TbItem> tbItems = elasticsearchRestTemplate.queryForList(searchQuery, TbItem.class);for (TbItem t : tbItems) {System.out.println(t);}}

分頁搜索

/*** 分頁搜索*/public void testPage(){SearchQuery searchQuery =new NativeSearchQuery(QueryBuilders.matchAllQuery());//設置分頁searchQuery.setPageable(PageRequest.of(0,3));//第1頁中查前3條//設置排序searchQuery.addSort(Sort.by(Sort.Direction.DESC,"price"));//根據價格的降序排序List<TbItem> tbItems = elasticsearchRestTemplate.queryForList(searchQuery, TbItem.class);for (TbItem t : tbItems) {System.out.println(t);}}

總結

以上是生活随笔為你收集整理的Spring Data ElasticSearch的操作的全部內容,希望文章能夠幫你解決所遇到的問題。

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