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

手机界面设计素材seo网站推广经理

手机界面设计素材,seo网站推广经理,北京注册公司流程,宁波海曙建设局网站1 普通类型 1.1 基本操作 1.1.1 导入实战数据 数据字段如下#xff1a; 字段类型作用pricelong汽车售价colortext汽车颜色maketext汽车品牌solddate销售日期 # 创建索引 PUT /cars {mappings : {transactions : {properties : { 字段类型作用pricelong汽车售价colortext汽车颜色maketext汽车品牌solddate销售日期 # 创建索引 PUT /cars {mappings : {transactions : {properties : {color : {type : keyword},make : {type : keyword},price : {type : long},sold : {type : date}}}} }# 导入数据 POST /cars/transactions/_bulk { index: {}} { price : 10000, color : red, make : honda, sold : 2014-10-28 } { index: {}} { price : 20000, color : red, make : honda, sold : 2014-11-05 } { index: {}} { price : 30000, color : green, make : ford, sold : 2014-05-18 } { index: {}} { price : 15000, color : blue, make : toyota, sold : 2014-07-02 } { index: {}} { price : 12000, color : green, make : toyota, sold : 2014-08-19 } { index: {}} { price : 20000, color : red, make : honda, sold : 2014-11-05 } { index: {}} { price : 80000, color : red, make : bmw, sold : 2014-01-01 } { index: {}} { price : 25000, color : blue, make : ford, sold : 2014-02-12 }1.1.2 最简单的聚合terms桶 # 第一个聚合命令是terms桶相当于SQL中的group by将所有记录按照颜色聚合 GET /cars/transactions/_search {size:0,aggs:{popular_colors:{terms: {field: color}} } }1.1.3 添加度量指标 上面的示例返回的是每个桶中的文档数量接下es支持丰富的指标例如平均值(Avg)、最大值(Max)、最小值(Min)、累加和(Sum)等接下来试试累加和的用法下面请求的作用是统计每种颜色汽车的销售总额 GET /cars/transactions/_search {size:0,aggs:{colors:{terms: {field: color},aggs:{sales:{sum:{field:price}}}} } }# 解释 GET /cars/transactions/_search {size:0,aggs:{ ------和前面一样指定聚合操作colors:{ ------别名terms: { ------桶类型是按指定字段聚合field: color ------按照color字段聚合},aggs:{ ------新增的aggs对象用于处理聚合在每个桶内的文档sales:{ ------别名sum:{ ------度量指标是指定字段求和field:price ---求和的字段是price}}}} } }aggregations : { ------聚合结果colors : {doc_count_error_upper_bound : 0,sum_other_doc_count : 0,buckets : [ ------这个json数组的每个对象代表一个桶{key : red, ------该桶将所有color等于red的文档聚合进来doc_count : 4, ------有4个color等于red的文档sales : { ------这里面是sum计算后的结果 value : 130000.0 ------所有color等于red的汽车销售总额}},{key : blue,doc_count : 2,sales : {value : 40000.0 ------所有color等于blue的汽车销售总额}}, 1.2 区间聚合 1.2.1条形图(histogram桶) 以汽车销售记录为例做一次聚合查询为售价创建histogram桶以20000作为间隔每个桶负责的区间如上图所示相关的销售记录就会被放入对应的桶中请求参数和说明如下 # 可执行查询 GET /cars/transactions/_search {size:0, aggs:{ price:{ histogram: { field: price, interval: 20000 }} } } # 解释 GET /cars/transactions/_search {size:0, ---令返回值的hits对象为空aggs:{ ---聚合命令price:{ ---聚合字段名称histogram: { ---桶类型field: price, ---指定price字段的值作为判断条件interval: 20000 ---每个桶负责的区间大小为20000}} } }# 返回结果aggregations : { ---聚合结果price : { ---请求参数中指定的名称buckets : [ ---price桶的数据在此数组中{key : 0.0, ---第一个桶区间[0-19999]0.0是起始值doc_count : 3 ---这个区间有三个文档price值分别是10000、12000、15000},{key : 20000.0, ---第二个桶区间[20000-39999]20000.0是起始值doc_count : 4 ---这个区间有四个文档},{key : 40000.0, ---第三个桶区间[40000-59999]40000.0是起始值doc_count : 0 ---这个区间没有文档},......1.2.2 控制空桶是否返回 在上面的返回值中第三个桶中没有文档在有的业务场景中我们不需要没有数据的桶此时可以用min_doc_count参数来控制如果min_doc_count等于2表示桶中最少有两条记录才会出现在返回内容中如下所示min_doc_count如果等于1那么空桶就不会被es返回了 GET /cars/transactions/_search {size:0,aggs:{price:{histogram: {field: price,interval: 20000,min_doc_count: 1}} } } 1.2.3 histogram桶加metrics 上面的例子返回结果只有每个桶内的文档数也可以加入metrics对桶中的数据进行处理例如计算每个区间内的最高价、最低价、平均售价可以加入max、min、avg参数如下 # 可执行查询 GET /cars/transactions/_search {size:0, aggs:{ price:{ histogram: { field: price, interval: 20000, min_doc_count: 1},aggs: { max_price: { max:{ field: price }},min_price: { min:{ field: price }},avg_price: { avg:{ field: price }}}} } }# 解释 GET /cars/transactions/_search {size:0, ---令返回值的hits对象为空aggs:{ ---聚合命令price:{ ---聚合字段名称histogram: { ---桶类型field: price, ---指定price字段的值作为判断条件interval: 20000 ---每个桶负责的区间大小为20000},aggs: { ---表示对桶内数据做metricsmax_price: { ---指定metrics处理结果的字段名max:{ ---metrics类型为maxfield: price ---指定取price字段的值做最大值比较}},min_price: { ---指定metrics处理结果的字段名min:{ ---metrics类型为minfield: price ---指定取price字段的值做最小值比较}},avg_price: { ---指定metrics处理结果的字段名avg:{ ---metrics类型为avgfield: price ---指定取price字段的值计算平均值}}}} } }# 返回结果aggregations : { ---聚合结果price : { ---请求参数中指定的名称buckets : [ ---price桶的数据在此数组中{key : 0.0, ---第一个区间[0-19999]0.0是起始值doc_count : 3, ---这个区间有三条记录price值分别是10000、12000、15000max_price : { ---指定的metrics结果名称value : 15000.0 ---桶中有三个文档price字段的最大值是15000},min_price : {value : 10000.0 ---桶中有三个文档price字段的最小值是10000},avg_price : {value : 12333.333333333334 ---桶中有三个文档price字段的平均值是12333.333333333334}},...... 1.2.4 时间区间的桶(date_histogram) histogram桶可以实现按照时间分段么如果用毫秒数来处理似乎是可以的但是对年月日的处理就力不从心了常见的时间区间处理用date_histogram桶即可满足要求下面就是date_histogram桶的用法每月销售多少台汽车 GET /cars/transactions/_search { # 可执行查询 GET /cars/transactions/_search {size: 0, aggs: { sales: { date_histogram: { field: sold, interval: month, format: yyyy-MM-dd },aggs: { max_price: { max:{ field: price }},min_price: { min:{ field: price }}}}} }# 解释size: 0, ---令返回值的hits对象为空aggs: { ---聚合命令sales: { ---聚合字段名称date_histogram: { ---桶类型field: sold, ---用sold字段的值作进行时间区间判断interval: month, ---间隔单位是月format: yyyy-MM-dd ---返回的数据中时间字段格式},aggs: { ---表示对桶内数据做metricsmax_price: { ---指定metrics处理结果的字段名max:{ ---metrics类型为maxfield: price ---指定取price字段的值做最大值比较}},min_price: { ---指定metrics处理结果的字段名min:{ ---metrics类型为minfield: price ---指定取price字段的值做最小值比较}}}}} }# es返回 aggregations : { ---聚合结果sales : { ---请求参数中指定的名称buckets : [ ---sales桶的数据在此数组中{key_as_string : 2014-01-01, ---请求的format参数指定了key的格式key : 1388534400000, ---真正的时间字段doc_count : 1, ---2014年1月份的文档数量max_price : { ---2014年1月的文档做了metrics类型为max的处理后结果在此value : 80000.0 ---2014年1月的文档中price字段的最大值},min_price : { ---2014年1月的文档做了metrics类型为min的处理后结果在此value : 80000.0 ---2014年1月的文档中price字段的最大值}},{key_as_string : 2014-02-01,key : 1391212800000,doc_count : 1,max_price : {value : 25000.0},min_price : {value : 25000.0}},...... 1.2.5 连续多次聚合 连续分桶第二次分桶一定是在第一次分桶的基础上对每一个桶再进行二次分桶这一点可以在{}范围上看出global关键字可以突破这个限制但是两次分桶的结果仍然遵循{}的层次这一点可以在全局桶体会到。 来做一个略为复杂的聚合操作按季度展示每个汽车品牌的销售总额操作的第一步是按照时间区间做聚合然后在每个桶中将文档按照品牌做第二次聚合第二次聚合的结果也可以理解为多个桶每个桶中的文档是某个平台在某个季度的销售总额 # 可执行 GET /cars/transactions/_search {size: 0, aggs: { sales: { date_histogram: { field: sold, interval: 1q, format: yyyy-MM-dd, min_doc_count: 1 },aggs: { per_make_sum: { terms: { field: make },aggs: { sum_price: { sum: { field: price }}}}}} } }# 解释 GET /cars/transactions/_search {size: 0, ---令返回值的hits对象为空aggs: { ---聚合命令sales: { ---聚合字段名称date_histogram: { ---桶类型为时间区间field: sold, ---指定sold字段的值作为判断条件interval: 1q, ---区间间隔为1季度format: yyyy-MM-dd, ---返回的桶的key被格式化时的格式min_doc_count: 1 ---空桶不返回},aggs: { ---第二层桶per_make_sum: { ---聚合字段名称terms: { ---桶类型为termsfield: make ---按照make字段聚合},aggs: { ---第二层桶的metricssum_price: { ---聚合字段名称sum: { ---metrics处理累加field: price ---取price字段的值累加}}}}}}} }# es返回 aggregations : {sales : {buckets : [ ---聚合结果{key_as_string : 2014-01-01, ---当前桶的key的格式化后的值key : 1388534400000, ---当前桶的key原值doc_count : 2, ---当前桶中文档数per_make_sum : { ---第二层桶的名称doc_count_error_upper_bound : 0,sum_other_doc_count : 0,buckets : [ ---第二层聚合结果{key : bmw, ---聚合字段的值这里是汽车品牌doc_count : 1, ---桶内的文档数量sum_price : { ---metrics处理结果名称value : 80000.0 ---metrics处理结果这里是销售额累加值}},{key : ford, ---聚合字段的值这里是汽车品牌doc_count : 1, ---桶内的文档数量sum_price : { ---metrics处理结果名称value : 25000.0 ---metrics处理结果这里是销售额累加值 1.3 范围限定 1.3.1 最简单的查询范围 福特汽车一共分为几种颜色这就是最简单的范围限定聚合限定了汽车品牌查询DSL如下 # 可执行 GET /cars/transactions/_search {size:0,query: { term: { make: ford }}, aggs:{ popular_colors:{ terms: { field: color }} } }# 解释 GET /cars/transactions/_search {size:0,query: { ---范围限定的查询term: { ---查询类型是精确匹配make: ford ---查询条件是品牌为福特}}, aggs:{ ---聚合popular_colors:{ ---聚合字段名terms: { ---桶类型field: color ---匹配字段是color}} } }# es返回aggregations : { ---聚合结果popular_colors : { ---聚合字段doc_count_error_upper_bound : 0,sum_other_doc_count : 0,buckets : [ ---这个数组的元素是所有的桶{key : blue, ---color为blue的文档doc_count : 1 ---文档数为1},{key : green, ---color为blue的文档doc_count : 1 ---文档数为1}]}} } 1.3.2 全局桶 如果想对比福特汽车的销售额和所有汽车的销售额可以通过全局桶对所有文档做聚合关键字是global全局桶的聚合不受范围限定的影响 # 可执行 GET /cars/transactions/_search {size: 0,query: { term: { make: ford }},aggs: { ford_sales: { sum: { field: price }},all: { global: {}, aggs: { all_sales: { sum: { field: price }}}}} }# 解释 GET /cars/transactions/_search {size: 0,query: { ---范围限定的查询term: { ---查询类型是精确匹配make: ford ---查询条件是品牌为福特}},aggs: { ---聚合ford_sales: { ---聚合字段名sum: { ---直接对范围内的所有文档执行metrics类型是累加field: price ---选择price字段的值进行累加}},all: { ---聚合字段名global: {}, ---全局桶关键字表示忽略前面term查询的范围限定aggs: { ---聚合all_sales: { ---聚合字段名sum: { ---直接对范围内的所有文档执行metrics类型是累加field: price ---选择price字段的值进行累加}}}}} } # es返回 ......aggregations : { ---聚合结果all : { ---全局桶的聚合结果(term查询无效)doc_count : 8, ---文档总数all_sales : { ---聚合字段名value : 212000.0 ---总销售额}},ford_sales : { ---聚合字段名(term查询限定了范围只有福特汽车的销售记录)value : 55000.0 ---福特汽车销售额}} } 1.3.3 使用filter提高查询性能 虽然query和filter限定范围的结果是一样的但是filter会忽略评分并且有可能缓存结果数据这些都是性能上的优势。 前面的范围限定用到了query其实适用于查询的过滤器也能应用在聚合操作中下面是过滤聚合的查询和前面一样也是统计总销售和和福特汽车的销售额 # 可执行 GET /cars/transactions/_search {size: 0,query: {bool: { filter: { term: { make: ford }}}},aggs: { ford_sales: { sum: { field: price }},all: { global: {}, aggs: { all_sales: { sum: { field: price }}}}} }# 解释 GET /cars/transactions/_search {size: 0,query: {bool: { ---布尔查询里面可以将query和filter组合使用filter: { ---本例只用到了filterterm: { ---精确匹配make: ford ---匹配福特品牌 }}}},aggs: { ---聚合结果ford_sales: { ---聚合字段名sum: { ---metrics操作累加field: price ---累加字段是price}},all: { ---聚合字段名 global: {}, ---全局桶关键字表示忽略范围限定aggs: { ---聚合all_sales: { ---聚合字段名sum: { ---metrics操作累加field: price ---累加字段是price}}}}} } 1.3.4 桶内filter 学习桶内filter之前先看看官方的布尔查询DSL如下所示查询JSON对象的内部可以加入filter对查询结果做过滤 GET /_search {query: { bool: { must: [ ---布尔查询{ match: { title: Search }}, { match: { content: Elasticsearch }} ],filter: [ ---对查询结果做过滤{ term: { status: published }}, { range: { publish_date: { gte: 2015-01-01 }}} ]}} } 桶内filter和布尔查询中的filter类似对进入桶中的数据可以加入filter这样桶内的数据就是此filter过滤后的数据了举个例子统计蓝色的福特汽车销售额首先限定品牌范围这个可以直接用之前的限定方式然后在桶内加入一个filter只保留颜色为蓝色的文档 GET /cars/transactions/_search {size: 0,query: {bool: { ---布尔查询里面可以将query和filter组合使用filter: { ---本例只用到了filterterm: { ---精确匹配make: ford ---匹配福特品牌 }}}},aggs: {sales: {filter: { ---桶内filterterm: { ---精确匹配color: blue ---匹配蓝色}},aggs: {blue_sales: {sum: { ---metrics操作累加field: price}}}}} }# es返回hits : {total : 2,max_score : 0.0,hits : [ ]},aggregations : {sales : {doc_count : 1,green_sales : {value : 25000.0}}} }1.4 结果排序 1.4.1 默认排序 之前文章中的聚合查询我们都没有做排序设置此时es会用每个桶的doc_count字段做降序下图是个terms桶聚合的示例可见返回了三个bucket对象是按照doc_count字段降序排列的 1.4.2 内置排序 除了自定义排序es自身也内置了两种排序参数可以直接拿来使用 # _count这个参数对应的就是doc_count以下请求的排序效果和默认的排序效果是一致 GET /cars/transactions/_search {size:0,aggs:{popular_colors:{terms: {field: color,order: { ---表示要对聚合结果做排序_count: desc ---排序字段是doc_count顺序是降序}}} } }# _key在区间聚合的时候(histogram或者date_histogram)可以根据桶的key做排序 GET /cars/transactions/_search {size: 0,aggs: {price: {histogram: { ---区间聚合field: price, ---取price字段的值interval: 20000, ---每个区间的大小是20000order: { ---表示要对聚合结果做排序_key: desc ---排序字段是桶的key值这里是每个区间的起始值顺序是降序}}}} } # es返回......aggregations : {price : {buckets : [{key : 80000.0,doc_count : 1},{key : 60000.0,doc_count : 0},{key : 40000.0,doc_count : 0},{key : 20000.0,doc_count : 4},{key : 0.0,doc_count : 3}]}} } 2 nested类型 2.1 一个官网例子 A special single bucket aggregation that enables aggregating nested documents. For example, lets say we have an index of products, and each product holds the list of resellers - each having its own price for the product. The mapping could look like: # 可执行 # resellers is an array that holds nested documents. PUT /products {mappings: {Apple:{properties : {resellers : { type : nested,properties : {reseller : { type : text },price : { type : double }}}}}} }# We are using a dynamic mapping for the name attribute. PUT /products/Apple/0 {name: LED TV, resellers: [{reseller: companyA,price: 350},{reseller: companyB,price: 500}] }# The following request returns the minimum price a product can be purchased for GET /products/_search {size: 0,query : {match : { name : led tv }},aggs : {resellers : {nested : {path : resellers},aggs : {min_price : { min : { field : resellers.price } }}}} }As you can see above, the nested aggregation requires the path of the nested documents within the top level documents. Then one can define any type of aggregation over these nested documents. {...aggregations: {resellers: {doc_count: 2,min_price: {value: 350}参考资料 https://blog.csdn.net/boling_cavalry/article/details/89735952 详细讲解了聚合查询https://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-bucket-nested-aggregation.html官网例子
http://wiki.neutronadmin.com/news/21013/

相关文章:

  • 企业建设网站的重要性深圳市网站开发公司
  • 网站设计师培训班个人交养老保险价格表
  • 下载好了网站模板怎么开始做网站?精通网站建设 pdf
  • 东莞电商网站建设现在公司做各网站要多少钱
  • 官渡网站建设wordpress让访客停留
  • 网站作品怎么做链接网站底部备案号代码
  • 网站制作佛山手机端网站seo
  • 肇庆cms建站系统营销什么意思
  • 哪有专做飞织鞋面的网站网络推广和网站推广平台
  • 杂志网站建设公司简介网页
  • 餐饮连锁企业网站建设方案免费网站设计软件
  • 基于响应式设计的网站建设打车软件开发
  • 零成本做网站百度网址大全电脑版
  • 网站优化公司大家好一键制作网站软件
  • 网站建设的实践报告网站制作切片
  • 手机小程序制作山东东营网络seo
  • 拿网站的文章做外链南京制作网页培训班
  • 中原郑州网站建设wordpress 题库
  • 笑话网站代码天津做网站哪个公司好
  • 深圳做网站报价南京网站优化步骤
  • 旅游网站开发的意义相关资料网站被安全狗拦截
  • 旅游的网站怎么做的软件商店应用
  • 网站做百度推广多少钱成都住建局官网蓉e办
  • 诸城营销型网站建设少儿编程几岁开始学最好
  • 网站制作公司嘉兴邢台seo价格
  • 论文网站开发网站建设教程多少钱
  • 呼和浩特市网站公司山东省建设厅注册中心网站
  • 建设外贸网站的细节小公司
  • 策划公司网站建设wordpress more标签失效
  • 龙岗网站制作培训班公司注册资金可以取出来用吗