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

免费网站你知道我的意思的热点新闻

免费网站你知道我的意思的,热点新闻,网站后台不能排版,上海网站seo公司数据聚合 聚合的种类 DSL实现Bucket聚合 如图所示,设置了10个桶,那么就显示了数量最多的前10个桶,品牌含有7天酒店的有30家, 品牌含有如家的也有30家。 修改排序规则 限定聚合范围 DSL实现Metrics聚合 如下案例要求对不同的品…

数据聚合

聚合的种类

DSL实现Bucket聚合

 如图所示,设置了10个桶,那么就显示了数量最多的前10个桶,品牌含有7天酒店的有30家,

品牌含有如家的也有30家。

修改排序规则

 

 限定聚合范围

 DSL实现Metrics聚合

如下案例要求对不同的品牌进行统计,所以要进行分组。

 如图所示,要对桶的平均评分做排序,要使用不同桶的平均评分

 

RestClient实现聚合

请求组装 

    @Testvoid testAggregation() throws IOException {//1.准备RequestSearchRequest request = new SearchRequest("hotel");//2.准备DSl//2.1设置sizerequest.source().size(0);//2.2聚合request.source().aggregation(AggregationBuilders.terms("brandAgg").field("brand").size(10));//3.发出请求SearchResponse response = client.search(request, RequestOptions.DEFAULT);//4.解析结果System.out.println(response);}

 

结果解析

    @Testvoid testAggregation() throws IOException {//1.准备RequestSearchRequest request = new SearchRequest("hotel");//2.准备DSl//2.1设置sizerequest.source().size(0);//2.2聚合request.source().aggregation(AggregationBuilders.terms("brandAgg").field("brand").size(10));//3.发出请求SearchResponse response = client.search(request, RequestOptions.DEFAULT);//4.解析结果Aggregations aggregations = response.getAggregations();//4.1根据聚合名称获取聚合结果Terms brandTerms = aggregations.get("brandAgg");//4.2获取bucketsList<? extends Terms.Bucket> buckets = brandTerms.getBuckets();//4.3遍历for (Terms.Bucket bucket : buckets) {//4.4获取keyString key = bucket.getKeyAsString();System.out.println(key);}}

 

多条件聚合

在Service中 

将公共代码抽取出来,提高复用性

    @Overridepublic Map<String, List<String>> 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.解析结果Map<String, List<String>>result=new HashMap<>();Aggregations aggregations = response.getAggregations();//5.1根据品牌名称获取品牌结果List<String> brandList = getAggByName(aggregations,"brandAgg");result.put("品牌",brandList);//5.2根据品牌名称获取品牌结果List<String> cityList = getAggByName(aggregations,"cityAgg");result.put("城市",cityList);//5.3根据品牌名称获取品牌结果List<String> starList = getAggByName(aggregations,"starAgg");result.put("星级",starList);return result;} catch (IOException e) {throw new RuntimeException(e);}}private static List<String> getAggByName(Aggregations aggregations,String aggName) {//4.1根据聚合名称获取聚合结果Terms brandTerms = aggregations.get(aggName);//4.2获取bucketsList<? extends Terms.Bucket> buckets = brandTerms.getBuckets();//4.3遍历List<String>brandList=new ArrayList<>();for (Terms.Bucket bucket : buckets) {//4.4获取keyString key = bucket.getKeyAsString();brandList.add(key);}return brandList;}

 

在一个测试类中

@SpringBootTest
class HotelDemoApplicationTests {@Autowiredprivate IHotelService hotelService;@Testvoid contextLoads() {Map<String, List<String>> filters = hotelService.filters();System.out.println(filters);}}

 运行得到

带过滤条件的聚合

在查询的时候要在查询结果上做聚合,不应该直接将所有数据的聚合结果返回。

所以就是加上query参数。

Controller中 

传递的参数和正常参数一模一样 

@PostMapping("filters")public Map<String, List<String>> getFilters(@RequestBody RequestParams Params){return hotelService.filters(Params);}

Service中

添加传递参数,并且新设置了2.3query,使用搜索时同款的query设置方法

 @Overridepublic Map<String, List<String>> filters(RequestParams Params) {try {//1.准备RequestSearchRequest request = new SearchRequest("hotel");//2.准备DSl//2.1设置sizerequest.source().size(0);//2.2聚合buildAggregation(request);//2.3querybuildBasicQuery(Params, request);//3.发出请求SearchResponse response = client.search(request, RequestOptions.DEFAULT);//4.解析结果Map<String, List<String>>result=new HashMap<>();Aggregations aggregations = response.getAggregations();//5.1根据品牌名称获取品牌结果List<String> brandList = getAggByName(aggregations,"brandAgg");result.put("品牌",brandList);//5.2根据品牌名称获取品牌结果List<String> cityList = getAggByName(aggregations,"cityAgg");result.put("城市",cityList);//5.3根据品牌名称获取品牌结果List<String> starList = getAggByName(aggregations,"starAgg");result.put("星级",starList);return result;} catch (IOException e) {throw new RuntimeException(e);}}

结果测试

根据搜索框和过滤条件成功过滤

 

http://www.ds6.com.cn/news/21313.html

相关文章:

  • 用香港阿里云做网站好有钱怎么优化电脑系统
  • 网站建设项目公告培训心得简短
  • 网站建设 知识库搜索引擎主要包括三个部分
  • 容桂网站制作代理最有吸引力的营销模式
  • 网站首页新增悬浮小窗怎么做seo变现培训
  • 福田欧曼etx自卸车baidu优化
  • 网页基础设计网络优化的三个方法
  • cms网站开发需要学什么店铺推广软文案例
  • 公共网站怎地做经典营销案例分析
  • 佛山网站建设的设计原则百度竞价恶意点击软件
  • 网络推广网站套餐营销策划与运营团队
  • 两学一做网站视频上海网站排名优化怎么做
  • 东莞做网站定制旺道网站排名优化
  • 做网站需要服务器和什么软件深圳外贸网络推广渠道
  • 做国外订单用哪个网站semen是什么意思
  • 宝鸡小外贸网站建设电商怎么做
  • 做网站还有钱赚吗西安百度推广电话
  • dw企业网站设计网络营销都具有哪些功能
  • 网站文章分类微信seo是什么意思
  • 淘宝联盟 网站建设 内容少恶意点击软件
  • 宁波市住房和城乡建设厅网站百度图片搜索引擎入口
  • 做化工哪个网站好商城网站建设
  • 自己做网站做外贸可以吗排名优化网站建设
  • 广州市政府门户网站的网址是百度教育网站
  • wordpress修改默认头像英文网站seo发展前景
  • wordpress msnseo项目培训
  • 女装市场网站建设费用评估网站设计论文
  • 重庆建设工程造价协会seo网站优化流程
  • 专业北京网站建设全国防疫大数据平台
  • 链接缩短网址深圳网站优化