当前位置: 首页 > news >正文

工程业绩在建设厅网站都能查到百度上公司做网站

工程业绩在建设厅网站都能查到,百度上公司做网站,包头企业做网站,传媒wordpress博客#x1f468;‍#x1f393;作者简介#xff1a;一位大四、研0学生#xff0c;正在努力准备大四暑假的实习 #x1f30c;上期文章#xff1a;详解SpringCloud微服务技术栈#xff1a;ElasticSearch实战#xff08;旅游类项目#xff09; #x1f4da;订阅专栏#x… ‍作者简介一位大四、研0学生正在努力准备大四暑假的实习 上期文章详解SpringCloud微服务技术栈ElasticSearch实战旅游类项目 订阅专栏微服务技术全家桶 希望文章对你们有所帮助 在之前已经了解了ElasticSearch的基本用法DSL语句以及RestClient实现并利用ElasticSearch做了一个旅游类项目加以巩固现在要进行ElasticSearch更深入的内容内容包括 数据聚合来对海量数据做统计和分析结合kibana还能形成可视化的图形报表 自动补全根据用户输入的部分关键字信息去补全关键字 数据同步先分析MySQL与ElasticSearch的双写一致性问题并给出对应的解决方案 集群ES的集群和集群中不同角色的作用并且搭建一个企业级的高可用的集群 深入ElasticSearch——数据聚合 数据聚合聚合分类DSL实现Bucket聚合DSL实现Metrics聚合RestClient实现聚合多条件聚合带过滤条件的聚合 数据聚合 聚合分类 聚合可以实现对文档数据的统计、分析和运算。常见聚合有3类 DSL实现Bucket聚合 现在要统计所有数据中的酒店品牌有几种此时可以根据酒店品牌的名称做聚合。 MySQL里面直接用group by而这里需要用Bucket聚合具体来说是用的term聚合 # 对价格小于200的做聚合也可以不限定聚合的范围不写query GET /hotel/_search {query: {range: {price: {lte: 200}}},size: 0, # 设置size0表示结果中不包含文档只包含聚合结果aggs: { # 定义聚合brandAgg: { # 给聚合起个名字terms: { # 聚合的类型按照品牌因此选择termfield: brand, # 参与聚合的字段size: 20 # 希望获取的聚合结果的数量默认10}}} }DSL实现Metrics聚合 获取每个品牌的用户评分的min、max、avg等值因此要做聚合的嵌套在每个bucket中做计算 GET /hotel/_search {size: 0,aggs: {brandAgg: {terms: {field: brand,size: 20,order: { # 做排序需要指定排序的字段scoreAgg.avg: desc}},aggs: { # 品牌聚合的自聚合对每组分别做计算scoreAgg: { # 聚合名称stats: { # 聚合类型stats可以计算min、max、avgfield: score # 聚合字段}}}}} }RestClient实现聚合 依然是通过DSL语句来写java语句 编写测试类 Testvoid testAggregation() throws IOException {//1.准备requestSearchRequest request new SearchRequest(hotel);//2.准备DSL//2.1 设置size不需要查看文档只要看聚合结果request.source().size(0);//2.1 聚合request.source().aggregation(AggregationBuilders.terms(brandAgg) //聚合名称brandAgg类型terms.field(brand) //参与聚合的字段.size(10));//3.发出请求SearchResponse response client.search(request, RequestOptions.DEFAULT);//打印即可查看输出的结构对照结构来做逐层做解析//System.out.println(response response);//4.解析结果//4.1 获取聚合信息Aggregations aggregations response.getAggregations();//4.2根据聚合名称获取聚合结果之前是term类型这里返回的也是term类型Terms brandTerms aggregations.get(brandAgg);//4.3获取bucketsList? extends Terms.Bucket buckets brandTerms.getBuckets();//4.4遍历buckets取出每一个桶分类for (Terms.Bucket bucket : buckets) {String key bucket.getKeyAsString();System.out.println(key key);}}多条件聚合 在IUserService接口中定义方法实现对品牌、城市、星级的聚合搜索页面的品牌、城市等信息不应该是在页面中写死的而是通过聚合索引库中的酒店数据得来的。 例如我限定了价格的range为100-300如果杭州不包含这样价位的酒店那么导航栏上面的城市信息直接就不应该有杭州两个字 IUserService中声明方法 /*** 查询城市、星级、品牌的聚合效果* return 聚合结果格式{城市: {上海, 北京}, 品牌: {如家, 希尔顿}}*/MapString, ListString filters();UserService实现方法体 Overridepublic MapString, ListString filters() {try {//1.准备requestSearchRequest request new SearchRequest(hotel);//2.准备DSL//2.1设置sizerequest.source().size(0);//2.2设置聚合buildAggregation(request);//3.发出请求SearchResponse response client.search(request, RequestOptions.DEFAULT);//4.解析响应MapString, ListString result new HashMap(); //存放解析后的结果Aggregations aggregations response.getAggregations();result.put(brand, getAggByName(aggregations, brandAgg));result.put(city, getAggByName(aggregations, cityAgg));result.put(starName, getAggByName(aggregations, starAgg));return result;} catch (IOException e) {throw new RuntimeException(e);}}private ListString getAggByName(Aggregations aggregations, String aggName) {ListString list new ArrayList(); //存放每个桶的valueTerms brandTerms aggregations.get(aggName); //这里返回值不要默认自行设置为Terms类型的List? extends Terms.Bucket buckets brandTerms.getBuckets();for (Terms.Bucket bucket : buckets) {String key bucket.getKeyAsString();list.add(key);}return list;}private void buildAggregation(SearchRequest request) {request.source().aggregation(AggregationBuilders.terms(brandAgg).field(brand).size(100));request.source().aggregation(AggregationBuilders.terms(cityAgg).field(city).size(100));request.source().aggregation(AggregationBuilders.terms(starAgg).field(starName).size(100));}可以在测试类中注入IUserService调用方法查看运行结果 Resourceprivate IHotelService hotelService;Testvoid contextLoads() {MapString, ListString filters hotelService.filters();System.out.println(filters filters);}带过滤条件的聚合 聚合已经完成但是聚合的结果还没有返回到前端实际上前端页面会向服务端发起请求查询品牌、城市、星级等字段的聚合结果我们应当渲染完返还给前端。 查看前端的请求 可以看到请求的参数和之前的list里面的是一样这是因为需要限定一下范围比如限定了城市为北京搜索条件为“如家”那么应该对北京的、名字带“如家”的酒店去做聚合而不是所有的酒店这样会大大提高效率。 1、编写controller接口接受该请求 PostMapping(/filters)public MapString, ListString getFilters(RequestBody RequestParams params){return hotelService.filters(params);}2、修改IUserService#getFilter()方法添加RequestParam参数 MapString, ListString filters(RequestParams params);3、修改getFilters方法的业务聚合时添加query条件 至此数据聚合的实现已经完成。
http://www.pierceye.com/news/810463/

相关文章:

  • 大连网站建设设计公司哪家好临海市城乡建设规划局网站
  • 福州商城网站建设网站建设的域名和空间价位
  • 如何做外卖网站网页设计照片
  • 长沙河西做网站自己做的网站怎么设置文件下载
  • 计算机本科论文 网站建设wordpress如何添加关键词和描述
  • div嵌套影响网站收录唐山做网站多少钱
  • 做网站挂谷歌广告赚钱吗windows优化大师自动安装
  • 网站下一步工作怎么做网上最好购物网站
  • OA 公司网站 铁道建设报自驾游网站建设
  • wordpress建站网站根目录短视频怎么赚钱
  • 亳州网站开发公司wordpress 添加分享
  • 如何查询网站接入信息移动网站开发框架
  • 河南做网站的百度竞价推广收费标准
  • 深圳的深圳的网站建设公司校园网站建设方向
  • 电商网站建设 解决方案的设计营销策略都有哪些方面
  • 菏泽网站建设兼职凡科网制作网站教程
  • 实验一 电子商务网站建设与维护北京网站设计培训学校
  • 周到的网站建设合肥建筑网站大全
  • 国外互联网资讯网站南宁网站制作费用
  • 建设公司网站要注意哪些蜜雪冰城推广软文
  • 做信息安全的网站博客网站的建设
  • 门户网站建设项目书提升学历是什么意思
  • 上海网站建设极简慕枫塘沽有哪些互联网公司
  • 社区网站如何做官方网站建设哪儿有
  • 做兼职的网站策划书大连中山网站建设
  • 中国摄影网站深圳网站建设龙华
  • 个人网站怎么建立深圳网站建站费用
  • 笔趣阁建站教程网页设计 网站建设啥意思
  • 海门网站开发西安响应式网站建设服务提供商
  • 自适应网站建站哈尔滨市建设安全监察网站