當前位置:
首頁 >
前端技术
> javascript
>内容正文
javascript
Spring Data ElasticSearch的操作
生活随笔
收集整理的這篇文章主要介紹了
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的操作的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 技嘉1080显卡体质测试软件,技嘉 GT
- 下一篇: SpringBoot参数校验