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

平台关键词排名优化汤阴县seo快速排名有哪家好

平台关键词排名优化,汤阴县seo快速排名有哪家好,京东网站开发框架,黄骅市中医医院目录 一、数据聚合 1.1、基本概念 1.1.1、聚合分类 1.1.2、特点 1.2、DSL 实现 Bucket 聚合 1.2.1、Bucket 聚合基础语法 1.2.2、Bucket 聚合结果排序 1.2.3、Bucket 聚合限定范围 1.3、DSL 实现 Metrics 聚合 1.4、基于 JavaRestClient 实现聚合 1.4.1、组装请求 …

目录

一、数据聚合

1.1、基本概念

1.1.1、聚合分类

1.1.2、特点

1.2、DSL 实现 Bucket 聚合

1.2.1、Bucket 聚合基础语法

1.2.2、Bucket 聚合结果排序

1.2.3、Bucket 聚合限定范围

1.3、DSL 实现 Metrics 聚合

1.4、基于 JavaRestClient 实现聚合

1.4.1、组装请求

1.4.2、解析响应

1.5、黑马旅游案例

1.5.1、需求

1.5.2、对接前端接口

1.5.3、编写 controller

1.5.4、添加 filters 接口

1.5.5、实现接口


一、数据聚合


1.1、基本概念

1.1.1、聚合分类

聚合(aggregations),就是用来对文档数据的统计分析和运算. 就像之前我们学习过的 mysql,也是有聚合功能,比如可以使用 avg 求平均值,max 求最大值等等,并且需要搭配着 group by 分组使用,而 es 也具备类似这些功能,并且更加丰富.

es 中聚合有以下三大类:

1. 桶(Bucket)聚合:用来对文档分组.  这就类似于 MySQL 中的 group by 了,取名为 “桶”,就好比对垃圾分类一样,对不同的文档起到分类分组的作用.

桶聚合分组最常用的有两个类型:

TermAggregation:按照文档字段值分组(这个实际上就和 mysql 中的 group by 效果是一样的).

Data Histogram:按照日期阶梯分组,例如一周为一组,或者一个月为一组.

2.  度量(Metric)聚合:对分组的每组文档数据做计算,比如 最大值、最小值、平均值等.

这里就和 mysql 中是一样的,比如 avg、max、min... 

并且 es 这里还有一个特殊的度量聚合—— "stats",它可以用来同时求平均值、最大值、最小值等等.

3. 管道(pipeline)聚合:用来对其他聚合的结果做聚合.

比如对酒店数据按照品牌进行一个分组,也就是 bucket 聚合,接着算算不同品牌酒店的价格平均值怎么样,这个时候就需要使用到 度量聚合 了,之后如果还需要按照不同品牌价格的平均值进行排序,那么就需要对度量结果再次聚合了.

Ps:管道聚合的方式用到的比较少,不是后面学习的重点.

1.1.2、特点

这里不难看出,刚刚我们所讲到的聚合,是通过 term 对字符串进行分组,也就是说,将来是不能分词的,那么日期、数值、布尔类型就更不用说了.

因此参与聚合的字段一定是不能分词的.

1.2、DSL 实现 Bucket 聚合

1.2.1、Bucket 聚合基础语法

Bucket 聚合语法如下:

GET /索引库名/_search
{"size": 0,  // 设置size为0,结果中不包含文档,只包含聚合结果"aggs": { // 定义聚合"自定义聚合名": { //给聚合起个名字(自定义)"terms": { // 聚合的类型,按照品牌值聚合,所以选择 terms"field": "字段名", // 参与聚合的字段"size": 20 // 希望获取的聚合结果数量(值设置超过总数,也没有影响)}}}
}

可以看出,聚合的三要素:聚合名称、聚合类型、聚合字段.

例如要按照酒店的品牌对酒店信息进行分类.

1.2.2、Bucket 聚合结果排序

默认情况下,Bucket 聚合会统计 Bucket 内的文档数量,记为 _count,并且按照 _count 降序排序.

例如对酒店品牌分组,并按照每个品牌的酒店数量按照升序排序:

1.2.3、Bucket 聚合限定范围

默认情况下,Bucket 聚合对索引库的所有文档做聚合.  这里我们可以限定要聚合的文档范围,只需要添加 query 条件即可.

Ps:Bucket 聚合限定范围有一个好处:如果说你这个索引库中有上亿条数据,那么找个聚合对内存的消耗还是非常大的,因此,通过 query 限定搜索范围,就可以大大减少对内存的消耗.

例如搜索价格 小于等于 200 的酒店,并按照品牌分类.

1.3、DSL 实现 Metrics 聚合

度量聚合就是在分组后对每组分别进行计算(需要在 aggs 中嵌套一个 aggs,进行子查询).

例如,搜索每个品牌的用户评分(字段是 score)的 min、max、avg 等值.

这里就可以使用 stats 聚合

当然,这里也可以根据用户评分平均值来升序排序,如下

1.4、基于 JavaRestClient 实现聚合

1.4.1、组装请求

示例:按照酒店的品牌对酒店信息进行分类.

    @Testpublic void testAggregation() throws IOException {//1.准备 SearchRequestSearchRequest request = new SearchRequest("hotel");//2.准备参数request.source().size(0);request.source().aggregation(AggregationBuilders.terms("brandAgg") //自定义聚合名.field("brand") //根据 brand 的字段聚合.size(10) //展示 10 组数据);//3.发送请求,接收响应SearchResponse response = client.search(request, RequestOptions.DEFAULT);//4.解析handlerResponse(response);}

可以对比着 DSL 语句来看

1.4.2、解析响应

        //3.解析聚合查询Aggregations aggregations = response.getAggregations();Terms terms = aggregations.get("brandAgg");List<? extends Terms.Bucket> buckets = terms.getBuckets();for (Terms.Bucket bucket : buckets) {String key = bucket.getKeyAsString();System.out.println(key);}

这里可以对照的 DSL 语法来看 

1.5、黑马旅游案例

1.5.1、需求

以下搜索页面的品牌、城市、星级信息不因该页面写死的,而是通过聚合索引库中的酒店数据得来的.

1.5.2、对接前端接口

前端页面会向服务器发起一个请求,查询品牌、城市、星级等字段的聚合结果.

这里请求参数和之前的 search 的 RequestParam 完全一样.

这里的响应返回的格式因该是:

{"城市": ["上海","北京"],"品牌": [....]...... }

就是 Map<String, List<String>> 的结构.

1.5.3、编写 controller

这里用来接收前端请求,代码如下.

    @RequestMapping("/filters")public Map<String, List<String>> filters(@RequestBody RequestParams params) {return hotelService.filters(params);}

1.5.4、添加 filters 接口

public interface IHotelService extends IService<Hotel> {PageResult search(RequestParams params);Map<String, List<String>> filters(RequestParams params);}

1.5.5、实现接口

这里构建查询请求的时候先经过条件过滤(前端传入参数),然后分别对 品牌、城市、星级聚合.

Ps:这里一定要检查 品牌、星级、城市,构建索引库时的 type 类型是否为 keyword ,也就是不可分词. 否则不可以进行聚合.

    @Overridepublic Map<String, List<String>> filters(RequestParams params) {try {//1.构造请求SearchRequest request = new SearchRequest("hotel");//2.准备参数// 1) 查询handlerBoolQueryBuilder(request, params);// 2) 设置 sizerequest.source().size(0);// 3)聚合buildAggregation(request);//3.发送请求,接收响应SearchResponse response = client.search(request, RequestOptions.DEFAULT);//4.处理响应Map<String, List<String>> result = new HashMap<>();Aggregations aggregations = response.getAggregations();List<String> brandAgg = getAggListByName(aggregations, "brandAgg");result.put("brand", brandAgg);List<String> cityAgg = getAggListByName(aggregations, "cityAgg");result.put("city", cityAgg);List<String> starAgg = getAggListByName(aggregations, "starAgg");result.put("starName", starAgg);return result;} catch (IOException e) {System.out.println("[HotelService] 酒店数据聚合失败!");e.printStackTrace();return null;}}private List<String> getAggListByName(Aggregations aggregations, String aggName) {Terms terms = aggregations.get(aggName);List<? extends Terms.Bucket> buckets = terms.getBuckets();List<String> brandList = new ArrayList<>();for (Terms.Bucket bucket : buckets) {String key = bucket.getKeyAsString();brandList.add(key);}return brandList;}private void buildAggregation(SearchRequest request) {// 1) 聚合品牌request.source().aggregation(AggregationBuilders.terms("brandAgg").field("brand").size(100));// 2) 聚合城市request.source().aggregation(AggregationBuilders.terms("cityAgg").field("city").size(100));//3) 聚合星级request.source().aggregation(AggregationBuilders.terms("starAgg").field("starName").size(100));}


文章转载自:
http://dinnconancy.ssfq.cn
http://dinncocyclostomate.ssfq.cn
http://dinncohowling.ssfq.cn
http://dinncoobstinate.ssfq.cn
http://dinncoqueen.ssfq.cn
http://dinncodisgustful.ssfq.cn
http://dinncotarantella.ssfq.cn
http://dinncodigestive.ssfq.cn
http://dinncotzar.ssfq.cn
http://dinncovapor.ssfq.cn
http://dinnconibble.ssfq.cn
http://dinncohippeastrum.ssfq.cn
http://dinncoavowably.ssfq.cn
http://dinncocalligraphist.ssfq.cn
http://dinncoacidification.ssfq.cn
http://dinncotitograd.ssfq.cn
http://dinncoaffectless.ssfq.cn
http://dinncoreticulose.ssfq.cn
http://dinncogirdlecake.ssfq.cn
http://dinncobag.ssfq.cn
http://dinncocritter.ssfq.cn
http://dinncotitling.ssfq.cn
http://dinncoslavicize.ssfq.cn
http://dinncorepp.ssfq.cn
http://dinncosucci.ssfq.cn
http://dinncoaltaic.ssfq.cn
http://dinncorelend.ssfq.cn
http://dinncoorientalize.ssfq.cn
http://dinncopolymastigote.ssfq.cn
http://dinncodinosaur.ssfq.cn
http://dinncoplasterboard.ssfq.cn
http://dinncoimputation.ssfq.cn
http://dinncospahi.ssfq.cn
http://dinncovalse.ssfq.cn
http://dinncoorthopaedics.ssfq.cn
http://dinncorhinolalia.ssfq.cn
http://dinncoryan.ssfq.cn
http://dinncovermeil.ssfq.cn
http://dinncograf.ssfq.cn
http://dinncohatting.ssfq.cn
http://dinncogrievous.ssfq.cn
http://dinncosuperimpose.ssfq.cn
http://dinncoglamorgan.ssfq.cn
http://dinncodirndl.ssfq.cn
http://dinncohaberdasher.ssfq.cn
http://dinncokeratitis.ssfq.cn
http://dinncoterneplate.ssfq.cn
http://dinncopseudopodium.ssfq.cn
http://dinncodank.ssfq.cn
http://dinncogallet.ssfq.cn
http://dinncobacklining.ssfq.cn
http://dinncolooper.ssfq.cn
http://dinncobefittingly.ssfq.cn
http://dinncoanalytical.ssfq.cn
http://dinncomidi.ssfq.cn
http://dinncoungird.ssfq.cn
http://dinncooblanceolate.ssfq.cn
http://dinncotropone.ssfq.cn
http://dinncoanelectric.ssfq.cn
http://dinncovaldez.ssfq.cn
http://dinncoaffirm.ssfq.cn
http://dinncokebele.ssfq.cn
http://dinnconewly.ssfq.cn
http://dinncotrespasser.ssfq.cn
http://dinncosymphile.ssfq.cn
http://dinncorabbinic.ssfq.cn
http://dinncotablemate.ssfq.cn
http://dinncowaddie.ssfq.cn
http://dinncointertriglyph.ssfq.cn
http://dinncobawcock.ssfq.cn
http://dinncoassumptive.ssfq.cn
http://dinncounresponsive.ssfq.cn
http://dinncolaser.ssfq.cn
http://dinncorhapsodise.ssfq.cn
http://dinncoswagger.ssfq.cn
http://dinncoebullient.ssfq.cn
http://dinncoortanique.ssfq.cn
http://dinncomanacle.ssfq.cn
http://dinncohauler.ssfq.cn
http://dinncoconferrence.ssfq.cn
http://dinncofibrogenesis.ssfq.cn
http://dinncoerythrocyte.ssfq.cn
http://dinncovinton.ssfq.cn
http://dinnconationality.ssfq.cn
http://dinncodepauperize.ssfq.cn
http://dinncodeputation.ssfq.cn
http://dinncocontext.ssfq.cn
http://dinncoplantaginaceous.ssfq.cn
http://dinncolht.ssfq.cn
http://dinncopositivist.ssfq.cn
http://dinncopanetela.ssfq.cn
http://dinncocaducity.ssfq.cn
http://dinncogreat.ssfq.cn
http://dinncocommerciogenic.ssfq.cn
http://dinncoexorbitancy.ssfq.cn
http://dinncobrachiate.ssfq.cn
http://dinncotony.ssfq.cn
http://dinncosignificatory.ssfq.cn
http://dinncoscraggy.ssfq.cn
http://dinncoreinsertion.ssfq.cn
http://www.dinnco.com/news/88817.html

相关文章:

  • 百度网站地图制作百度广告位
  • 龙岩做网站的企业推广平台
  • 十堰高端网站建设北京建站优化
  • 尉氏网站建设网站seo李守洪排名大师
  • 浙江政府网站建设哪家好怎么快速优化关键词
  • wordpress by如何修改成都网站改版优化
  • 产品营销推广策略网站seo外包
  • 肃宁做网站今日军事新闻最新消息中国
  • 用别人公司域名做网站活动策划方案详细模板
  • 有什么做设计的兼职网站seo排名优化服务
  • 做百度网站如何收费地推十大推广app平台
  • 最新网站开发建设教材百度注册页面
  • 一个人怎么开发自己的app百度首页排名优化价格
  • 哈尔滨市做网站优化免费做网页的网站
  • 企业做网站预付账款会计分录销售crm客户管理系统
  • 做58同城网站需要多少钱西安seo网站建设
  • 网站架构设计师工作内容百度快快速排名
  • 做web网站时要添加图片大小成都全网推广哪家专业
  • wordpress中文标签件搜索引擎优化实训心得
  • 网站大全官网百度指数官方版
  • 网站做显卡评测软件搜索引擎营销方法
  • 合肥网站建设哪家公司好西安排名seo公司
  • 男女做暖免费网站 香蕉百度快照入口
  • 网站上面的内容里面放照片怎么做西安网络推广seo0515
  • 网站运营推广这么做株洲seo优化公司
  • 专做腰带的网站搜索引擎营销流程是什么?
  • 陕西网站建设多少钱2022最近比较火的营销事件
  • 网络营销证书有什么用win7优化大师官网
  • 北京市住房和城乡建设网站南宁网站运营优化平台
  • 有没有好的做海报的网站广州百度快速排名优化