栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

eod项目(esb项目)

eod项目(esb项目)

第一种方式连接Es配置Config

第二种 方式连接

spring:
  elasticsearch:
    rest:
      uris: localhost:9200
      password: xxx
      username: xxx

在pom中导入es的jar包


    org.springframework.boot
    spring-boot-starter-data-elasticsearch

    org.elasticsearch.client
    elasticsearch-rest-high-level-client
    7.1.0


    org.elasticsearch.client
    elasticsearch-rest-client
    7.1.0


    org.elasticsearch
    elasticsearch
    7.1.0

定义dao 接口继承ElasticsearchRepository

import org.springframework.data.elasticsearch.repository.ElasticsearchCrudRepository;

public interface EsProductRepository extends ElasticsearchCrudRepository {
}

定义一个controller控制器,操作

 
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
 
import java.util.List;
 

@Controller
@Api(tags = "EsProductController", description = "搜索商品管理")
@RequestMapping("/esProduct")
public class EsProductController {
    @Autowired
    private EsProductService esProductService;
 
    @ApiOperation(value = "导入所有数据库中商品到ES")
    @RequestMapping(value = "/importAll", method = RequestMethod.POST)
    @ResponseBody
    public CommonResult importAllList() {
        int count = esProductService.importAll();
        return CommonResult.success(count);
    }
 
    @ApiOperation(value = "根据id删除商品")
    @RequestMapping(value = "/delete/{id}", method = RequestMethod.GET)
    @ResponseBody
    public CommonResult delete(@PathVariable Long id) {
        esProductService.delete(id);
        return CommonResult.success(null);
    }
 
    @ApiOperation(value = "根据id批量删除商品")
    @RequestMapping(value = "/delete/batch", method = RequestMethod.POST)
    @ResponseBody
    public CommonResult delete(@RequestParam("ids") List ids) {
        esProductService.delete(ids);
        return CommonResult.success(null);
    }
 
    @ApiOperation(value = "根据id创建商品")
    @RequestMapping(value = "/create/{id}", method = RequestMethod.POST)
    @ResponseBody
    public CommonResult create(@PathVariable Long id) {
        EsProduct esProduct = esProductService.create(id);
        if (esProduct != null) {
            return CommonResult.success(esProduct);
        } else {
            return CommonResult.failed();
        }
    }
 
    @ApiOperation(value = "简单搜索")
    @RequestMapping(value = "/search/simple", method = RequestMethod.GET)
    @ResponseBody
    public CommonResult> search(@RequestParam(required = false) String keyword,
                                                      @RequestParam(required = false, defaultValue = "0") Integer pageNum,
                                                      @RequestParam(required = false, defaultValue = "5") Integer pageSize) {
        Page esProductPage = esProductService.search(keyword, pageNum, pageSize);
        return CommonResult.success(CommonPage.restPage(esProductPage));
    }
 
    @ApiOperation(value = "综合搜索、筛选、排序")
    @ApiImplicitParam(name = "sort", value = "排序字段:0->按相关度;1->按新品;2->按销量;3->价格从低到高;4->价格从高到低",
            defaultValue = "0", allowablevalues = "0,1,2,3,4", paramType = "query", dataType = "integer")
    @RequestMapping(value = "/search", method = RequestMethod.GET)
    @ResponseBody
    public CommonResult> search(@RequestParam(required = false) String keyword,
                                                      @RequestParam(required = false) Long brandId,
                                                      @RequestParam(required = false) Long productCategoryId,
                                                      @RequestParam(required = false, defaultValue = "0") Integer pageNum,
                                                      @RequestParam(required = false, defaultValue = "5") Integer pageSize,
                                                      @RequestParam(required = false, defaultValue = "0") Integer sort) {
        Page esProductPage = esProductService.search(keyword, brandId, productCategoryId, pageNum, pageSize, sort);
        return CommonResult.success(CommonPage.restPage(esProductPage));
    }
 
    @ApiOperation(value = "根据商品id推荐商品")
    @RequestMapping(value = "/recommend/{id}", method = RequestMethod.GET)
    @ResponseBody
    public CommonResult> recommend(@PathVariable Long id,
                                                         @RequestParam(required = false, defaultValue = "0") Integer pageNum,
                                                         @RequestParam(required = false, defaultValue = "5") Integer pageSize) {
        Page esProductPage = esProductService.recommend(id, pageNum, pageSize);
        return CommonResult.success(CommonPage.restPage(esProductPage));
    }
 
    @ApiOperation(value = "获取搜索的相关品牌、分类及筛选属性")
    @RequestMapping(value = "/search/relate", method = RequestMethod.GET)
    @ResponseBody
    public CommonResult searchRelatedInfo(@RequestParam(required = false) String keyword) {
        EsProductRelatedInfo productRelatedInfo = esProductService.searchRelatedInfo(keyword);
        return CommonResult.success(productRelatedInfo);
    }
}
 
//匹配查询

	SearchRequest request = new SearchRequest();
        //创建搜索请求
        SearchRequest request = new SearchRequest();
        //创建用来放查询条件的的对象
        SearchSourceBuilder builder = new SearchSourceBuilder();
        //匹配查询
        QueryBuilder queryBuilder = QueryBuilders.matchQuery("字段", 值);
        //将匹配查询放入builder
        builder.query(queryBuilder);
        //将builder放入请求
        request.source(builder);
        //发送查询请求(固定写法RequestOptions.DEFAULT)
        SearchResponse response = client.search(request, RequestOptions.DEFAULT);
        //获取到查到的数据
        SearchHit[] hits = response.getHits().getHits();
        //创建List集合
        List goodsList = new ArrayList<>();
        //遍历hits数组放入到实体类
        for (SearchHit hit : hits) {
            Goods goods = JSONObject.parseObject(hit.getSourceAsString(), Goods.class);
            //将实体放到集合
            goodsList.add(goods);
        }

        return goodsList;

 //精确查询

	SearchRequest request = new SearchRequest();
        //创建搜索请求
        SearchRequest request = new SearchRequest();
        //创建用来放查询条件的的对象
        SearchSourceBuilder builder = new SearchSourceBuilder();
         //精确查询
        TermQueryBuilder termQueryBuilder=new TermQueryBuilder("字段",value);
        //将精确查询放到builder
        builder.query(termQueryBuilder);
        //将builder放入请求
        request.source(builder);
        //发送查询请求(固定写法RequestOptions.DEFAULT)
        SearchResponse response = client.search(request, RequestOptions.DEFAULT);
        //获取到查到的数据
        SearchHit[] hits = response.getHits().getHits();
        //创建List集合
        List goodsList = new ArrayList<>();
        //遍历hits数组放入到实体类
        for (SearchHit hit : hits) {
            Goods goods = JSONObject.parseObject(hit.getSourceAsString(), Goods.class);
            //将实体放到集合
            goodsList.add(goods);
        }

        return goodsList;

//查询全部

	SearchRequest request = new SearchRequest();
        //创建搜索请求
        SearchRequest request = new SearchRequest();
        //创建用来放查询条件的的对象
        SearchSourceBuilder builder = new SearchSourceBuilder();
        //查询全部
        MatchAllQueryBuilder matchAllQueryBuilder=QueryBuilders.matchAllQuery();
        //将匹配查询放入builder
        builder.query(matchAllQueryBuilder);
        //将builder放入请求
        request.source(builder);
        //发送查询请求(固定写法RequestOptions.DEFAULT)
        SearchResponse response = client.search(request, RequestOptions.DEFAULT);
        //获取到查到的数据
        SearchHit[] hits = response.getHits().getHits();
        //创建List集合
        List goodsList = new ArrayList<>();
        //遍历hits数组放入到实体类
        for (SearchHit hit : hits) {
            Goods goods = JSONObject.parseObject(hit.getSourceAsString(), Goods.class);
            //将实体放到集合
            goodsList.add(goods);
        }

        return goodsList;

一个值匹配多个字段

	SearchRequest request = new SearchRequest();
        //创建搜索请求
        SearchRequest request = new SearchRequest();
        //创建用来放查询条件的的对象
        SearchSourceBuilder builder = new SearchSourceBuilder();
        //一个值匹配多个字段
               MultiMatchQueryBuilder multiMatchQueryBuilder=QueryBuilders.multiMatchQuery("值","字段1","字段2")

        //将匹配查询放入builder
        builder.query(multiMatchQueryBuilder);
        //将builder放入请求
        request.source(builder);
        //发送查询请求(固定写法RequestOptions.DEFAULT)
        SearchResponse response = client.search(request, RequestOptions.DEFAULT);
        //获取到查到的数据
        SearchHit[] hits = response.getHits().getHits();
        //创建List集合
        List goodsList = new ArrayList<>();
        //遍历hits数组放入到实体类
        for (SearchHit hit : hits) {
            Goods goods = JSONObject.parseObject(hit.getSourceAsString(), Goods.class);
            //将实体放到集合
            goodsList.add(goods);
        }

        return goodsList;

多个值得精确查询

	SearchRequest request = new SearchRequest();
        //创建搜索请求
        SearchRequest request = new SearchRequest();
        //创建用来放查询条件的的对象
        SearchSourceBuilder builder = new SearchSourceBuilder();
        //多个值得精确查询
        TermQueryBuilder termQueryBuilder=QueryBuilders.termQuery("字段","值1","值2");
        //将匹配查询放入builder
        builder.query(termQueryBuilder);
        //将builder放入请求
        request.source(builder);
        //发送查询请求(固定写法RequestOptions.DEFAULT)
        SearchResponse response = client.search(request, RequestOptions.DEFAULT);
        //获取到查到的数据
        SearchHit[] hits = response.getHits().getHits();
        //创建List集合
        List goodsList = new ArrayList<>();
        //遍历hits数组放入到实体类
        for (SearchHit hit : hits) {
            Goods goods = JSONObject.parseObject(hit.getSourceAsString(), Goods.class);
            //将实体放到集合
            goodsList.add(goods);
        }

        return goodsList;

 bool mustNot 相当于mysql not 查询

	SearchRequest request = new SearchRequest();
        //创建搜索请求
        SearchRequest request = new SearchRequest();
        //创建用来放查询条件的的对象
        SearchSourceBuilder builder = new SearchSourceBuilder();
        //bool mustnot 相当于数据库 not 查询
         BoolQueryBuilder boolQueryBuilder=QueryBuilders.boolQuery();
        boolQueryBuilder.mustNot(QueryBuilders.matchQuery("name","尹")).mustNot(QueryBuilders.matchQuery("age",17));
        
        //将not查询放入builder
        builder.query(boolQueryBuilder);
        //将builder放入请求
        request.source(builder);
        //发送查询请求(固定写法RequestOptions.DEFAULT)
        SearchResponse response = client.search(request, RequestOptions.DEFAULT);
        //获取到查到的数据
        SearchHit[] hits = response.getHits().getHits();
        //创建List集合
        List goodsList = new ArrayList<>();
        //遍历hits数组放入到实体类
        for (SearchHit hit : hits) {
            Goods goods = JSONObject.parseObject(hit.getSourceAsString(), Goods.class);
            //将实体放到集合
            goodsList.add(goods);
        }

        return goodsList;

bool must 多个字段匹配查

	SearchRequest request = new SearchRequest();
        //创建搜索请求
        SearchRequest request = new SearchRequest();
        //创建用来放查询条件的的对象
        SearchSourceBuilder builder = new SearchSourceBuilder();
        //bool must 多个字段匹配查
           BoolQueryBuilder boolQueryBuilder=QueryBuilders.boolQuery();
       boolQueryBuilder.must(QueryBuilders.matchQuery("字段","值")).must(QueryBuilders.matchQuery("字段","值"));
        //将匹配查询放入builder
        builder.query(boolQueryBuilder);
        //将builder放入请求
        request.source(builder);
        //发送查询请求(固定写法RequestOptions.DEFAULT)
        SearchResponse response = client.search(request, RequestOptions.DEFAULT);
        //获取到查到的数据
        SearchHit[] hits = response.getHits().getHits();
        //创建List集合
        List goodsList = new ArrayList<>();
        //遍历hits数组放入到实体类
        for (SearchHit hit : hits) {
            Goods goods = JSONObject.parseObject(hit.getSourceAsString(), Goods.class);
            //将实体放到集合
            goodsList.add(goods);
        }

        return goodsList;

 bool 一个字段多个值匹配查

	SearchRequest request = new SearchRequest();
        //创建搜索请求
        SearchRequest request = new SearchRequest();
        //创建用来放查询条件的的对象
        SearchSourceBuilder builder = new SearchSourceBuilder();
        //bool 一个字段多个值匹配查
        BoolQueryBuilder boolQueryBuilder=QueryBuilders.boolQuery();
        List list=boolQueryBuilder.should();
        list.add(QueryBuilders.boolQuery("字段","值"));
        list.add(QueryBuilders.boolQuery("字段","值"));
        //将bool查询放入builder
        builder.query(boolQueryBuilder);
        //将builder放入请求
        request.source(builder);
        //发送查询请求(固定写法RequestOptions.DEFAULT)
        SearchResponse response = client.search(request, RequestOptions.DEFAULT);
        //获取到查到的数据
        SearchHit[] hits = response.getHits().getHits();
        //创建List集合
        List goodsList = new ArrayList<>();
        //遍历hits数组放入到实体类
        for (SearchHit hit : hits) {
            Goods goods = JSONObject.parseObject(hit.getSourceAsString(), Goods.class);
            //将实体放到集合
            goodsList.add(goods);
        }

        return goodsList;

分页查询

	SearchRequest request = new SearchRequest();
        //创建搜索请求
        SearchRequest request = new SearchRequest();
        //创建用来放查询条件的的对象
        SearchSourceBuilder builder = new SearchSourceBuilder();
        //分页
        
         builder .from(0);
        builder .size(2);
        //将匹配查询放入builder
        builder.query(queryBuilder);
        //将builder放入请求
        request.source(builder);
        //发送查询请求(固定写法RequestOptions.DEFAULT)
        SearchResponse response = client.search(request, RequestOptions.DEFAULT);
        //获取到查到的数据
        SearchHit[] hits = response.getHits().getHits();
        //创建List集合
        List goodsList = new ArrayList<>();
        //遍历hits数组放入到实体类
        for (SearchHit hit : hits) {
            Goods goods = JSONObject.parseObject(hit.getSourceAsString(), Goods.class);
            //将实体放到集合
            goodsList.add(goods);
        }

        return goodsList;

转载请注明:文章转载自 www.mshxw.com
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号