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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

springtboot 操作es

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

文章目錄

  • 三大塊
    • rest操作api
    • elasticRestTemplate操作es
    • mapper操作es

本文章看了下

使用的是6.8的包,但是我本地安裝的是7.13.4.居然也能操作,如果是7.x的包的話,就好了,暫時不影響使用。

三大塊

rest操作api

package com.tjx.elasticsearch;import org.apache.http.HttpHost; import org.elasticsearch.action.index.IndexRequest; import org.elasticsearch.action.index.IndexResponse; import org.elasticsearch.action.search.SearchRequest; import org.elasticsearch.action.search.SearchResponse; import org.elasticsearch.client.RequestOptions; import org.elasticsearch.client.RestClient; import org.elasticsearch.client.RestClientBuilder; import org.elasticsearch.client.RestHighLevelClient; import org.elasticsearch.index.query.BoolQueryBuilder; import org.elasticsearch.index.query.MatchQueryBuilder; import org.elasticsearch.index.query.QueryBuilders; import org.elasticsearch.index.query.TermQueryBuilder; import org.elasticsearch.search.SearchHit; import org.elasticsearch.search.SearchHits; import org.elasticsearch.search.aggregations.Aggregation; import org.elasticsearch.search.aggregations.AggregationBuilders; import org.elasticsearch.search.aggregations.Aggregations; import org.elasticsearch.search.aggregations.bucket.terms.Terms; import org.elasticsearch.search.aggregations.bucket.terms.TermsAggregationBuilder; import org.elasticsearch.search.builder.SearchSourceBuilder; import org.junit.jupiter.api.Test; import org.springframework.boot.test.context.SpringBootTest;import java.io.IOException; import java.util.HashMap; import java.util.List; import java.util.Map;@SpringBootTest public class TestRest {@Testvoid testRestInsert() throws IOException {//1.連接rest接口HttpHost http = new HttpHost("127.0.0.1", 9200, "http");RestClientBuilder restClientBuilder = RestClient.builder(http);//rest構建器RestHighLevelClient restHighLevelClient = new RestHighLevelClient(restClientBuilder);//獲取高級客戶端對象//2.封裝請求對象//BulkRequest bulkRequest = new BulkRequest(); //用于批量操作IndexRequest indexRequest = new IndexRequest("test_rest", "_doc", "1");HashMap skuMap = new HashMap();skuMap.put("name","法拉利 LaFerrari Aperta");skuMap.put("brandName","法拉利");skuMap.put("categoryName","超級跑車");HashMap spec = new HashMap();spec.put("動力","963匹");spec.put("扭矩","880N/m");spec.put("車長","4975mm");spec.put("重量","1250kg");skuMap.put("spec",spec);skuMap.put("createTime","2017-08-10");skuMap.put("price",43000000);skuMap.put("saleNum",209);skuMap.put("commentNum",6128746);indexRequest.source(skuMap);//bulkRequest.add(indexRequest); //用于批量操作//3.獲取響應結果IndexResponse indexResponse = restHighLevelClient.index(indexRequest, RequestOptions.DEFAULT);//BulkResponse bulkResponse = restHighLevelClient.bulk(bulkRequest, RequestOptions.DEFAULT); //用于批量操作int status = indexResponse.status().getStatus();System.out.println(status);restHighLevelClient.close();}@Testvoid testRestQueryMatch() throws IOException {//1.連接rest接口HttpHost http = new HttpHost("127.0.0.1", 9200, "http");RestClientBuilder restClientBuilder = RestClient.builder(http);//rest構建器RestHighLevelClient restHighLevelClient = new RestHighLevelClient(restClientBuilder);//獲取高級客戶端對象//2.封裝查詢請求SearchRequest searchRequest = new SearchRequest("test_rest");searchRequest.types("_doc"); //設置查詢的類型//創建查詢條件SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder(); //查詢源構建器MatchQueryBuilder matchQueryBuilder = QueryBuilders.matchQuery("categoryName", "超級跑車");searchSourceBuilder.query(matchQueryBuilder);searchRequest.source(searchSourceBuilder);//3.獲取查詢結果SearchResponse response = restHighLevelClient.search(searchRequest, RequestOptions.DEFAULT);SearchHits searchHits = response.getHits();long totalHits = searchHits.getTotalHits();System.out.println("記錄數:"+totalHits);SearchHit[] hits = searchHits.getHits();for (SearchHit hit : hits) {System.out.println(hit.getSourceAsString());}restHighLevelClient.close();}@Testvoid testRestQueryBool() throws IOException {//1.連接rest接口HttpHost http = new HttpHost("127.0.0.1", 9200, "http");RestClientBuilder restClientBuilder = RestClient.builder(http);//rest構建器RestHighLevelClient restHighLevelClient = new RestHighLevelClient(restClientBuilder);//獲取高級客戶端對象//2.封裝查詢請求SearchRequest searchRequest = new SearchRequest("test_rest");searchRequest.types("_doc"); //設置查詢的類型//創建查詢條件SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder(); //查詢源構建器BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery(); //布爾查詢構建器MatchQueryBuilder matchQueryBuilder = QueryBuilders.matchQuery("name", "LaFerrari");boolQueryBuilder.must(matchQueryBuilder);TermQueryBuilder termQueryBuilder = QueryBuilders.termQuery("brandName", "法拉利");boolQueryBuilder.must(termQueryBuilder);searchSourceBuilder.query(boolQueryBuilder);searchRequest.source(searchSourceBuilder);//3.獲取查詢結果SearchResponse response = restHighLevelClient.search(searchRequest, RequestOptions.DEFAULT);SearchHits searchHits = response.getHits();long totalHits = searchHits.getTotalHits();System.out.println("記錄數:" + totalHits);SearchHit[] hits = searchHits.getHits();for (SearchHit hit : hits) {System.out.println(hit.getSourceAsString());}restHighLevelClient.close();}@Testvoid testRestQueryfilter() throws IOException {//1.連接rest接口HttpHost http = new HttpHost("127.0.0.1", 9200, "http");RestClientBuilder restClientBuilder = RestClient.builder(http);//rest構建器RestHighLevelClient restHighLevelClient = new RestHighLevelClient(restClientBuilder);//獲取高級客戶端對象//2.封裝查詢請求SearchRequest searchRequest = new SearchRequest("test_rest");searchRequest.types("_doc"); //設置查詢的類型//創建查詢條件SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder(); //查詢源構建器BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery(); //布爾查詢構建器TermQueryBuilder termQueryBuilder = QueryBuilders.termQuery("brandName", "法拉利");boolQueryBuilder.filter(termQueryBuilder);searchSourceBuilder.query(boolQueryBuilder);searchRequest.source(searchSourceBuilder);//3.獲取查詢結果SearchResponse response = restHighLevelClient.search(searchRequest, RequestOptions.DEFAULT);SearchHits searchHits = response.getHits();long totalHits = searchHits.getTotalHits();System.out.println("記錄數:" + totalHits);SearchHit[] hits = searchHits.getHits();for (SearchHit hit : hits) {System.out.println(hit.getSourceAsString());}restHighLevelClient.close();}@Testvoid testRestQueryAggregation() throws IOException {//連接rest接口HttpHost http = new HttpHost("127.0.0.1", 9200, "http");RestClientBuilder restClientBuilder = RestClient.builder(http);//rest構建器RestHighLevelClient restHighLevelClient = new RestHighLevelClient(restClientBuilder);//獲取高級客戶端對象//封裝查詢請求SearchRequest searchRequest = new SearchRequest("test_rest");searchRequest.types("_doc"); //設置查詢的類型//創建查詢條件SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder(); //查詢源構建器TermsAggregationBuilder aggregation = AggregationBuilders.terms("類型名稱").field("categoryName");searchSourceBuilder.aggregation(aggregation);searchSourceBuilder.size(0);searchRequest.source(searchSourceBuilder);//獲取查詢結果SearchResponse response = restHighLevelClient.search(searchRequest, RequestOptions.DEFAULT);Aggregations aggregations = response.getAggregations();Map<String, Aggregation> map = aggregations.getAsMap();Terms terms = (Terms) map.get("類型名稱");List<? extends Terms.Bucket> buckets = terms.getBuckets();for (Terms.Bucket bucket : buckets) {System.out.println(bucket.getKeyAsString()+":"+bucket.getDocCount());}restHighLevelClient.close();//高亮設置 // HighlightBuilder highlightBuilder = new HighlightBuilder(); // highlightBuilder.field("name").preTags("<font style='color:red'>").postTags("</font>"); // searchSourceBuilder.highlighter(highlightBuilder);} }

elasticRestTemplate操作es

package com.tjx.elasticsearch;import com.alibaba.fastjson.JSONObject; import com.tjx.elasticsearch.bean.ChildItem; import com.tjx.elasticsearch.bean.Item; import org.elasticsearch.action.search.SearchResponse; import org.elasticsearch.search.SearchHit; import org.elasticsearch.search.aggregations.Aggregation; import org.elasticsearch.search.aggregations.AggregationBuilders; import org.elasticsearch.search.aggregations.Aggregations; import org.elasticsearch.search.aggregations.bucket.range.Range; import org.elasticsearch.search.aggregations.bucket.range.RangeAggregationBuilder; import org.elasticsearch.search.aggregations.bucket.terms.Terms; import org.elasticsearch.search.aggregations.bucket.terms.TermsAggregationBuilder; import org.elasticsearch.search.aggregations.metrics.InternalNumericMetricsAggregation; import org.elasticsearch.search.aggregations.metrics.avg.Avg; import org.elasticsearch.search.aggregations.metrics.avg.AvgAggregationBuilder; import org.elasticsearch.search.aggregations.metrics.cardinality.CardinalityAggregationBuilder; import org.elasticsearch.search.aggregations.metrics.stats.extended.ExtendedStatsAggregationBuilder; import org.elasticsearch.search.aggregations.metrics.tophits.TopHits; import org.elasticsearch.search.aggregations.metrics.tophits.TopHitsAggregationBuilder; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.data.domain.PageRequest; import org.springframework.data.elasticsearch.core.ElasticsearchTemplate; import org.springframework.data.elasticsearch.core.ResultsExtractor; import org.springframework.data.elasticsearch.core.ScrolledPage; import org.springframework.data.elasticsearch.core.query.IndexQuery; import org.springframework.data.elasticsearch.core.query.IndexQueryBuilder; import org.springframework.data.elasticsearch.core.query.NativeSearchQueryBuilder; import org.springframework.data.elasticsearch.core.query.SearchQuery;import java.util.ArrayList; import java.util.Arrays; import java.util.Iterator; import java.util.List;import static org.elasticsearch.index.query.QueryBuilders.matchAllQuery;@SpringBootTest public class TestElasticsearchTemplate {@Autowiredprivate ElasticsearchTemplate elasticsearchTemplate;@Testvoid createIndex(){//創建索引及映射elasticsearchTemplate.createIndex(Item.class);//創建映射 // elasticsearchTemplate.putMapping(Item.class);}@Testvoid putMegacorp() {List<String> list=new ArrayList<>();list.add("sports");list.add("music");ChildItem childItem=new ChildItem(100,"taibai");Item item1=new Item(6L,"John","男",25,list,childItem);Item item2=new Item(7L,"Jane","Smith",32, Arrays.asList("music"),childItem);Item item3=new Item(8L,"Douglas","Fir",35,Arrays.asList("forestry"),childItem);IndexQuery indexQuery1 = new IndexQueryBuilder().withId(String.valueOf(item1.getLd())).withObject(item1).build();IndexQuery indexQuery2 = new IndexQueryBuilder().withId(String.valueOf(item2.getLd())).withObject(item2).build();IndexQuery indexQuery3 = new IndexQueryBuilder().withId(String.valueOf(item3.getLd())).withObject(item3).build();elasticsearchTemplate.bulkIndex(Arrays.asList(indexQuery1,indexQuery2,indexQuery3));}@Testvoid testPage() {SearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(matchAllQuery()).withIndices("test_springdata_es").withPageable(PageRequest.of(0, 10)).build();ScrolledPage<Item> scroll = elasticsearchTemplate.startScroll(1000, searchQuery, Item.class);String scrollId = scroll.getScrollId();List<Item> content = scroll.getContent();content.forEach(item->{System.out.println(item);});System.out.println(scrollId);elasticsearchTemplate.clearScroll(scrollId);}//平均最大最小求和聚合@Testvoid testAggregation(){AvgAggregationBuilder avgAggregationBuilder = AggregationBuilders.avg("taibai").field("price"); // MaxAggregationBuilder maxAggregationBuilder = AggregationBuilders.max("taibai").field("price");SearchQuery searchQuery = new NativeSearchQueryBuilder().addAggregation(avgAggregationBuilder).withIndices("goods").withTypes("_doc").build();Aggregations aggregations = elasticsearchTemplate.query(searchQuery, new ResultsExtractor<Aggregations>() {@Overridepublic Aggregations extract(SearchResponse response) {return response.getAggregations();}});Aggregation aggregation1 = aggregations.asList().get(0);InternalNumericMetricsAggregation.SingleValue singleValue= (InternalNumericMetricsAggregation.SingleValue) aggregation1;double value = singleValue.value();System.out.println(value);}//去重@Testvoid testAggregationCardinality(){CardinalityAggregationBuilder aggregationBuilder = AggregationBuilders.cardinality("taibai").field("price");SearchQuery searchQuery = new NativeSearchQueryBuilder().addAggregation(aggregationBuilder).withIndices("goods").withTypes("_doc").build();Aggregations aggregations = elasticsearchTemplate.query(searchQuery, new ResultsExtractor<Aggregations>() {@Overridepublic Aggregations extract(SearchResponse response) {return response.getAggregations();}});Aggregation aggregation1 = aggregations.getAsMap().get("taibai");InternalNumericMetricsAggregation.SingleValue singleValue= (InternalNumericMetricsAggregation.SingleValue) aggregation1;double value = singleValue.value();System.out.println(value);}//擴展查詢@Testvoid testAggregationextended_stats(){ExtendedStatsAggregationBuilder extendedStatsAggregationBuilder = AggregationBuilders.extendedStats("taibai").field("price");SearchQuery searchQuery = new NativeSearchQueryBuilder().addAggregation(extendedStatsAggregationBuilder).withIndices("goods").withTypes("_doc").build();Aggregations aggregations = elasticsearchTemplate.query(searchQuery, new ResultsExtractor<Aggregations>() {@Overridepublic Aggregations extract(SearchResponse response) {return response.getAggregations();}});Aggregation aggregation1 = aggregations.getAsMap().get("taibai");InternalNumericMetricsAggregation.MultiValue multiValue= (InternalNumericMetricsAggregation.MultiValue ) aggregation1;System.out.println(multiValue.value("max"));}//terms詞聚合@Testvoid testAggregationTerms(){TermsAggregationBuilder termsAggregationBuilder = AggregationBuilders.terms("taibai").field("price");SearchQuery searchQuery = new NativeSearchQueryBuilder().addAggregation(termsAggregationBuilder).withIndices("goods").withTypes("_doc").build();Aggregations aggregations = elasticsearchTemplate.query(searchQuery, new ResultsExtractor<Aggregations>() {@Overridepublic Aggregations extract(SearchResponse response) {return response.getAggregations();}});Aggregation aggregation1 = aggregations.getAsMap().get("taibai");Terms term1 = (Terms)aggregation1;List<? extends Terms.Bucket> buckets = term1.getBuckets();for (Terms.Bucket bucket : buckets) {System.out.println(bucket.getKey()+"||"+bucket.getDocCount());}}//top_hits最高匹配權值聚合@Testvoid testAggregationtop_hits(){TermsAggregationBuilder termsAggregationBuilder = AggregationBuilders.terms("taibai").field("price");TopHitsAggregationBuilder topHitsAggregationBuilder = AggregationBuilders.topHits("top").size(3);termsAggregationBuilder.subAggregation(topHitsAggregationBuilder);SearchQuery searchQuery = new NativeSearchQueryBuilder().addAggregation(termsAggregationBuilder).withIndices("goods").withTypes("_doc").build();Aggregations aggregations = elasticsearchTemplate.query(searchQuery, new ResultsExtractor<Aggregations>() {@Overridepublic Aggregations extract(SearchResponse response) {return response.getAggregations();}});Aggregation aggregation1 = aggregations.getAsMap().get("taibai");Terms term1 = (Terms)aggregation1;List<? extends Terms.Bucket> buckets = term1.getBuckets();for (Terms.Bucket bucket : buckets) {System.out.println(bucket.getKey()+"||"+bucket.getDocCount());Aggregation aggregation = bucket.getAggregations().getAsMap().get("top");TopHits topHits= (TopHits) aggregation;Iterator<SearchHit> iterator = topHits.getHits().iterator();while (iterator.hasNext()){SearchHit next = iterator.next();Object object=JSONObject.parse(next.getSourceAsString());System.out.println(object);}}}@Testvoid testAggregationRange(){RangeAggregationBuilder rangeAggregationBuilder = AggregationBuilders.range("taibai").field("age").addRange(20,30).addRange(30,40).addRange(40,50);SearchQuery searchQuery = new NativeSearchQueryBuilder().addAggregation(rangeAggregationBuilder).withIndices("bank").withTypes("_doc").build();Aggregations aggregations = elasticsearchTemplate.query(searchQuery, new ResultsExtractor<Aggregations>() {@Overridepublic Aggregations extract(SearchResponse response) {return response.getAggregations();}});Aggregation aggregation1 = aggregations.getAsMap().get("taibai");Range range = (Range)aggregation1;List<? extends Range.Bucket> buckets = range.getBuckets();for (Range.Bucket bucket : buckets) {System.out.println(bucket.getKeyAsString()+"--"+bucket.getDocCount());}}@Testvoid testAggregationLast(){RangeAggregationBuilder rangeAggregationBuilder = AggregationBuilders.range("age_range").field("age").addRange(20,30).addRange(30,40).addRange(40,50);TermsAggregationBuilder termsAggregationBuilder = AggregationBuilders.terms("gender_group").field("gender.keyword");AvgAggregationBuilder aggregationBuilder = AggregationBuilders.avg("balance_avg").field("balance");termsAggregationBuilder.subAggregation(aggregationBuilder);rangeAggregationBuilder.subAggregation(termsAggregationBuilder);SearchQuery searchQuery = new NativeSearchQueryBuilder().addAggregation(rangeAggregationBuilder).withIndices("bank").withTypes("_doc").build();Aggregations aggregations = elasticsearchTemplate.query(searchQuery, new ResultsExtractor<Aggregations>() {@Overridepublic Aggregations extract(SearchResponse response) {return response.getAggregations();}});Aggregation aggregation1 = aggregations.getAsMap().get("age_range");Range range = (Range)aggregation1;List<? extends Range.Bucket> buckets = range.getBuckets();for (Range.Bucket bucket : buckets) {System.out.println(bucket.getKeyAsString()+"--"+bucket.getDocCount());Aggregation gender_group = bucket.getAggregations().getAsMap().get("gender_group");Terms terms=(Terms)gender_group;List<? extends Terms.Bucket> buckets1 = terms.getBuckets();for (Terms.Bucket bucket1 : buckets1) {System.out.println(bucket1.getKeyAsString()+"--"+bucket1.getDocCount());Aggregation balance_avg = bucket1.getAggregations().getAsMap().get("balance_avg");Avg avg= (Avg) balance_avg;System.out.println(avg.getValue());}}}}

mapper操作es

@Configuration public class TransportClientConfig extends ElasticsearchConfigurationSupport {@Beanpublic Client elasticsearchClient() throws UnknownHostException { // Settings settings = Settings.builder().put("cluster.name", "taibai").build();Settings settings = Settings.builder().build();TransportClient client = new PreBuiltTransportClient(settings);client.addTransportAddress(new TransportAddress(InetAddress.getByName("127.0.0.1"), 9300));return client;}@Bean(name = {"elasticsearchOperations", "elasticsearchTemplate"})public ElasticsearchTemplate elasticsearchTemplate() throws UnknownHostException {return new ElasticsearchTemplate(elasticsearchClient(), entityMapper());}@Bean@Overridepublic EntityMapper entityMapper() {ElasticsearchEntityMapper entityMapper = new ElasticsearchEntityMapper(elasticsearchMappingContext(),new DefaultConversionService());entityMapper.setConversions(elasticsearchCustomConversions());return entityMapper;} }

GoodMapper

import com.tjx.elasticsearch.bean.Goods; import org.springframework.data.domain.Pageable; import org.springframework.data.elasticsearch.repository.ElasticsearchRepository;import java.util.List;public interface GoodsMapper extends ElasticsearchRepository<Goods, String> {List<Goods> findByName(String name);List<Goods> findByName(String name, Pageable pageable); }

TestMapper

package com.tjx.elasticsearch;import com.tjx.elasticsearch.bean.Goods; import com.tjx.elasticsearch.mapper.GoodsMapper; import org.elasticsearch.index.query.*; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Sort;import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.Iterator; import java.util.List;@SpringBootTest class TestMapper {@AutowiredGoodsMapper goodsMapper;//添加一條數據 and 修改一條數據@Testvoid insertGoods() {SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");String str = simpleDateFormat.format(new Date());Goods goods=new Goods(1025332689,"","OPPO R17新年版 2500萬美顏拍照 6.4英寸水滴屏 光感屏幕指紋 6G+128G 全網通 移動聯通電信4G 雙卡雙待手機",37400,20,100,"https://m.360buyimg.com/mobilecms/s720x720_jfs/t1/10441/9/5525/162976/5c177debEaf815b43/3aa7d4dc182cc4d9.jpg!q70.jpg.webp","https://m.360buyimg.com/mobilecms/s720x720_jfs/t1/10441/9/5525/162976/5c177debEaf815b43/3aa7d4dc182cc4d9.jpg!q70.jpg.webp",10,str,str,"10000243333000",558,"手機","OPPO","{'顏色': '王者榮耀定制版', '版本': 'R17'}",1,1,1,4L);System.out.println(goodsMapper.save(goods));}//批量插入和批量修改@Testvoid insertGoodsList() {List<Goods> list=new ArrayList<>();SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");String str = simpleDateFormat.format(new Date());Goods goods=new Goods(1001332689,"","OPPO R17新年版 2500萬美顏拍照 6.4英寸水滴屏 光感屏幕指紋 6G+128G 全網通 移動聯通電信4G 雙卡雙待手機",37400,10000,100,"https://m.360buyimg.com/mobilecms/s720x720_jfs/t1/10441/9/5525/162976/5c177debEaf815b43/3aa7d4dc182cc4d9.jpg!q70.jpg.webp","https://m.360buyimg.com/mobilecms/s720x720_jfs/t1/10441/9/5525/162976/5c177debEaf815b43/3aa7d4dc182cc4d9.jpg!q70.jpg.webp",10,str,str,"10000243333000",558,"手機","OPPO","{'顏色': '王者榮耀定制版', '版本': 'R17'}",1,1,1);Goods goods2=new Goods(1001368912,"","OPPO R17新年版 2500萬美顏拍照 6.4英寸水滴屏 光感屏幕指紋 6G+128G 全網通 移動聯通電信4G 雙卡雙待手機",37400,10000,100,"https://m.360buyimg.com/mobilecms/s720x720_jfs/t1/10441/9/5525/162976/5c177debEaf815b43/3aa7d4dc182cc4d9.jpg!q70.jpg.webp","https://m.360buyimg.com/mobilecms/s720x720_jfs/t1/10441/9/5525/162976/5c177debEaf815b43/3aa7d4dc182cc4d9.jpg!q70.jpg.webp",10,str,str,"10000243333000",558,"手機","OPPO","{'顏色': '王者榮耀定制版', '版本': 'R17'}",1,1,1);Goods goods3=new Goods(100001402792L,"","OPPO R17新年版 2500萬美顏拍照 6.4英寸水滴屏 光感屏幕指紋 6G+128G 全網通 移動聯通電信4G 雙卡雙待手機",37400,10000,100,"https://m.360buyimg.com/mobilecms/s720x720_jfs/t1/10441/9/5525/162976/5c177debEaf815b43/3aa7d4dc182cc4d9.jpg!q70.jpg.webp","https://m.360buyimg.com/mobilecms/s720x720_jfs/t1/10441/9/5525/162976/5c177debEaf815b43/3aa7d4dc182cc4d9.jpg!q70.jpg.webp",10,str,str,"10000243333000",558,"手機","OPPO","{'顏色': '王者榮耀定制版', '版本': 'R17'}",1,1,1);list.add(goods);list.add(goods2);list.add(goods3);goodsMapper.saveAll(list);}//刪除數據@Testvoid updateGoods() {//刪除一條 // goodsMapper.deleteById("1001332689");//刪除所有或者傳入集合 刪除集合中的數據goodsMapper.deleteAll();}//查詢數據@Testvoid uqueryGoods() {//查詢一條數據 // Optional<Goods> goods = goodsMapper.findById("100001402792"); // System.out.println(goods.get());// System.out.println("====================================");//查詢所有數據 // Iterable<Goods> goodsAll = goodsMapper.findAll(); // Iterator<Goods> goodsIterator = goodsAll.iterator(); // int count=0; // while (goodsIterator.hasNext()){ // Goods goods1 = goodsIterator.next(); // System.out.println(goods1); // count++; // } // System.out.println(count);// System.out.println("====================================");//分頁排序// page頁碼 并不是跳過多少數據//返回數Pageable pageable=PageRequest.of(1,100,Sort.by(Sort.Direction.ASC, "num"));Page<Goods> goodsPage = goodsMapper.findAll(pageable);Iterator<Goods> goodsIterator = goodsPage.iterator();int count=0;while (goodsIterator.hasNext()){Goods goods1 = goodsIterator.next();System.out.println(goods1);count++;}System.out.println(count);}@Testvoid exists(){//判斷文檔是否存在boolean exists = goodsMapper.existsById("文檔ID");}//term查詢@Testvoid termGoods(){//主要用于精確匹配哪些值,比如數字,日期,布爾值或 not_analyzed 的字符串(未經分析的文本數據類型)// 搜索前不會再對搜索詞進行分詞,所以我們的搜索詞必須是文檔分詞集合中的一個。TermQueryBuilder termQueryBuilder=new TermQueryBuilder("name","2018");Pageable pageable=PageRequest.of(0,100);Iterable<Goods> goods = goodsMapper.search(termQueryBuilder,pageable);Iterator<Goods> goodsIterator = goods.iterator();int count=0;while (goodsIterator.hasNext()){Goods goods1 = goodsIterator.next();System.out.println(goods1);count++;}System.out.println(count);}//terms查詢@Testvoid termsGoods(){//terms 跟 term 有點類似,但 terms 允許指定多個匹配條件。// 如果某個字段指定了多個值,那么文檔需要一起去做匹配 或者關系TermsQueryBuilder termsQueryBuilder=new TermsQueryBuilder("name","2018","最新","女鞋");Pageable pageable=PageRequest.of(0,100);Iterable<Goods> goods = goodsMapper.search(termsQueryBuilder,pageable);Iterator<Goods> goodsIterator = goods.iterator();int count=0;while (goodsIterator.hasNext()){Goods goods1 = goodsIterator.next();System.out.println(goods1);count++;}System.out.println(count);}//range查詢@Testvoid rangelGoods(){//范圍查詢RangeQueryBuilder rangeQueryBuilder=new RangeQueryBuilder("price");rangeQueryBuilder.gt(20);rangeQueryBuilder.lt(10000);Pageable pageable=PageRequest.of(0,100);Iterable<Goods> goods = goodsMapper.search(rangeQueryBuilder,pageable);Iterator<Goods> goodsIterator = goods.iterator();int count=0;while (goodsIterator.hasNext()){Goods goods1 = goodsIterator.next();System.out.println(goods1);count++;}System.out.println(count);}//exists查詢@Testvoid existsGoods(){//exists 查詢可以用于查找文檔中是否包含指定字段或沒有某個字段,類似于SQL語句中的 IS_NULL 條件//包含這個字段就返回返回這條數據ExistsQueryBuilder existsQueryBuilder=new ExistsQueryBuilder("category_name");Pageable pageable=PageRequest.of(0,100);Iterable<Goods> goods = goodsMapper.search(existsQueryBuilder,pageable);Iterator<Goods> goodsIterator = goods.iterator();int count=0;while (goodsIterator.hasNext()){Goods goods1 = goodsIterator.next();System.out.println(goods1);count++;}System.out.println(count);}//match查詢@Testvoid matchGoods(){//match查詢會先對搜索詞進行分詞,分詞完畢后再逐個對分詞結果進行匹配,因此相比于term的精確搜索,match是分詞匹配搜索//如果用 match 下指定了一個確切值,在遇到數字,日期,布爾值或者 not_analyzed 的字符串時,它將為你搜索你給定的值MatchQueryBuilder matchQueryBuilder=new MatchQueryBuilder("name","2018年最新女鞋");Pageable pageable=PageRequest.of(0,100);Iterable<Goods> goods = goodsMapper.search(matchQueryBuilder,pageable);Iterator<Goods> goodsIterator = goods.iterator();int count=0;while (goodsIterator.hasNext()){Goods goods1 = goodsIterator.next();System.out.println(goods1);count++;}System.out.println(count);}//bool查詢 和 filter 查詢@Testvoid boolGoods(){ // bool 查詢可以用來合并多個條件查詢結果的布爾邏輯,它包含一下操作符: // must :: 多個查詢條件的完全匹配,相當于 and 。 // must_not :: 多個查詢條件的相反匹配,相當于 not 。 // should :: 至少有一個查詢條件匹配, 相當于 or 。BoolQueryBuilder boolQueryBuilder=new BoolQueryBuilder();//搜索2018年價格在1000-2000之內的女鞋 顏色不能是白色的 只能是黑色或者是紅色RangeQueryBuilder rangeQueryBuilder=new RangeQueryBuilder("price");rangeQueryBuilder.lte(2000);rangeQueryBuilder.gte(1000);MatchQueryBuilder matchQueryBuilder=new MatchQueryBuilder("name","2018女鞋");MatchQueryBuilder matchQueryBuilder2=new MatchQueryBuilder("spec","藍色");boolQueryBuilder.must(rangeQueryBuilder);boolQueryBuilder.must(matchQueryBuilder);boolQueryBuilder.mustNot(matchQueryBuilder2);MatchQueryBuilder matchQueryBuilder3=new MatchQueryBuilder("spec","黑色 紅色");boolQueryBuilder.must(matchQueryBuilder3);TermQueryBuilder termsQueryBuilder=new TermQueryBuilder("num",10000);boolQueryBuilder.filter(termsQueryBuilder);// Pageable pageable=PageRequest.of(0,100);Iterable<Goods> goods = goodsMapper.search(boolQueryBuilder);Iterator<Goods> goodsIterator = goods.iterator();int count=0;while (goodsIterator.hasNext()){Goods goods1 = goodsIterator.next();System.out.println(goods1);count++;}System.out.println(count);}//自定義方法@Testvoid testCustom(){ // List<Goods> goodsList = goodsMapper.findByName("2018新款"); // for (Goods goods : goodsList) { // System.out.println(goods); // }//自定義的方法是分詞后 and的關系 必須全部滿足List<Goods> goodsList2 = goodsMapper.findByName("2018新款李白",PageRequest.of(1,10));for (Goods goods : goodsList2) {System.out.println(goods);}} }

pom

<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.2.1.RELEASE</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>com.tjx</groupId><artifactId>elasticsearch_springboot</artifactId><version>0.0.1-SNAPSHOT</version><name>elasticsearch_springboot</name><description>Demo project for Spring Boot</description><properties><java.version>1.8</java.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope><exclusions><exclusion><groupId>org.junit.vintage</groupId><artifactId>junit-vintage-engine</artifactId></exclusion></exclusions></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-elasticsearch</artifactId></dependency><!--<dependency>--><!--<groupId>org.elasticsearch.plugin</groupId>--><!--<artifactId>transport-netty4-client</artifactId>--><!--<version>7.3.2</version>--><!--</dependency>--><!--<dependency>--><!--<groupId>org.elasticsearch.client</groupId>--><!--<artifactId>transport</artifactId>--><!--<version>7.3.2</version>--><!--</dependency>--><!--<dependency>--><!--<groupId>org.elasticsearch</groupId>--><!--<artifactId>elasticsearch</artifactId>--><!--<version>7.3.2</version>--><!--</dependency>--><!--<dependency>--><!--<groupId>org.elasticsearch.client</groupId>--><!--<artifactId>elasticsearch-rest-high-level-client</artifactId>--><!--<version>7.3.2</version>--><!--</dependency>--><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.47</version></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-jdbc</artifactId></dependency><!-- mybatis依賴 --><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>2.0.0</version></dependency><!-- druid數據源依賴 --><dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.1.12</version></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>

源碼git地址: https://gitee.com/hfl-learn-note/elasticsearch_springboot


總結

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

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

主站蜘蛛池模板: 亚洲av无码专区在线 | 操人视频免费 | 国产黄色片子 | 日韩精品一区在线视频 | 亚洲va欧美va天堂v国产综合 | 亚洲靠逼| 鸥美毛片 | 国产精品宾馆在线精品酒店 | 欧美一级视频在线观看 | 成人毛片在线精品国产 | jlzzjlzzjlzz亚洲人| 日韩欧美精品 | 亚洲精品国产精品乱码视色 | 久久久久久久久久久久久久免费看 | 成人在线你懂的 | 污污视频免费网站 | 精品午夜视频 | 久久综合一区二区 | 中文字幕一区三区 | 日本69少妇 | 久草a视频 | av在线天天 | 色婷婷激情av| 性欧美大战久久久久久久免费观看 | 三级免费| 亚洲一区二区三区三州 | 亚洲一区在线电影 | 在线观看涩涩视频 | 久热超碰 | 91天堂素人 | 禁久久精品乱码 | 免费在线视频一区二区 | 中文视频在线观看 | 超碰997| av免费国产 | 性综艺节目av在线播放 | 少妇在线视频 | 波多野结衣伦理 | 日韩电影在线观看中文字幕 | 美女高潮黄又色高清视频免费 | 午夜影院一区 | 一级精品视频 | 欧美一区二区三区久久 | 午夜亚洲AV永久无码精品蜜芽 | 久久亚洲AV无码精品 | 中文字幕一区二区三区在线观看 | 久久无码人妻一区二区三区 | 亚洲生活片 | 亚洲毛片一区二区 | 艳妇臀荡乳欲伦交换电影 | 国产在线精品观看 | 337p日本欧洲亚洲大胆精筑 | 91丝袜呻吟高潮美腿白嫩在线观看 | 91成人在线免费视频 | 亚洲欧美一区二区三区四区 | 偷拍视频一区二区 | 狠狠躁 | 97国产视频| 成品短视频泡芙 | 午夜av在线播放 | 欧美成人自拍 | 裸体男女树林做爰 | 成年人网站黄 | 玉足调教丨vk24分钟 | 国产乱妇4p交换乱免费视频 | 老妇女玩小男生毛片 | 中文在线a在线 | 国产综合在线视频 | 中文字幕日韩高清 | 99久久久无码国产精品6 | 国产剧情久久 | 国产卡一卡二卡三无线乱码新区 | 黄色免费视频观看 | 日韩在线www | 一本视频 | 高潮疯狂过瘾粗话对白 | 在线小视频你懂的 | 欧美日批 | 特级西西444www高清大胆免费看 | 日本女人一级片 | 老外黄色一级片 | 中国少妇初尝黑人巨大 | 福利一区二区视频 | 俺也来俺也去俺也射 | 久草电影在线 | 亚洲色图制服丝袜 | 香蕉视频网站在线 | 久久精品男人的天堂 | 亚洲午夜av久久乱码 | 久久久久国产精品人妻 | 呦呦网| 午夜精品久久久久久久久久久久久 | 乱色精品无码一区二区国产盗 | 性猛交xxxx乱大交孕妇印度 | 一区视频免费观看 | 国产乱淫视频 | 久久99精品久久久久久国产越南 | 91成人免费在线观看 | 春色网站|