摘要: 主要知识点: percentile_ranks的用法 percentile的优化 一、percentile_ranks的用法 SLA:就是所提供的服务的标准。 比如一个网站的提供的访问延时的SLA,确保所有的请求100%都必须在200ms以内,在大公司内一般都是要求100%在200ms以内,如果超过1s,则需要升级到A级故障,代表网站的访问性能和用户体验急剧下... 阅读全文
posted @ 2018-03-09 20:29 outback123 阅读(539) 评论(0) 推荐(0) 编辑
摘要: 主要知识点 percentiles的用法 现有一个需求:比如有一个网站,记录下了每次请求的访问的耗时,需要统计tp50,tp90,tp99 tp50:50%的请求的耗时最长在多长时间 tp90:90%的请求的耗时最长在多长时间 tp99:99%的请求的耗时最长在多长时间 一、准备数据 1、建立mappings PUT /website { ... 阅读全文
posted @ 2018-03-09 20:28 outback123 阅读(835) 评论(0) 推荐(0) 编辑
摘要: 主要知识点 precision_threshold参数的理解 HLL算法优化(hash) cardinality,count(distinct),5%的错误率,性能在100ms左右 一、precision_threshold 优化准确率和内存开销 GET /tvs/sales/_search { "size" : 0, "a... 阅读全文
posted @ 2018-03-09 20:27 outback123 阅读(1021) 评论(0) 推荐(0) 编辑
摘要: 主要知识点 cartinality的用法 es去重用的是cartinality metric算法,对每个bucket中的指定的field进行去重,然后获取去重后的count,类似于count(distcint) cartinality的用法 GET /tvs/sales/_search { "size": 0, "aggs": {"mouth": { ... 阅读全文
posted @ 2018-03-09 20:26 outback123 阅读(212) 评论(0) 推荐(0) 编辑
摘要: 主要知识点: 什么是易并行算法 什么是不易并行算法 什么是三角选择原则 什么是近似聚合算法 一、易并行聚合算法(如max) es是多分步式的结构的,所以当你做下个搜索或计算时都是会在各个node上执行,所以有些聚合分析的算法,是很容易就可以并行执行的,比如说max,你要在你的数据库中找一个最大的但,只需要两步 各个node都返回最大值给coord... 阅读全文
posted @ 2018-03-09 20:25 outback123 阅读(560) 评论(0) 推荐(0) 编辑
摘要: 主要知识点: 在做下钻分析时的排序 需求,以颜色进行bucket,这里bucket里面的doc以其各品牌的平均价格排序, GET /tvs/sales/_search { "size": 0, "aggs": {"group_by_color": { "terms": {"field": "color"}, "aggs": {"group_by_b... 阅读全文
posted @ 2018-03-09 20:24 outback123 阅读(174) 评论(0) 推荐(0) 编辑
摘要: 课程大纲 GET /tvs/sales/_search { "size": 0, "query": { "term": { "brand": { "value": "长虹" } } }, "aggs": { "recent_150d": { "filter": { "range... 阅读全文
posted @ 2018-03-09 20:23 outback123 阅读(147) 评论(0) 推荐(0) 编辑
摘要: 主要知识点: 自定义排序 es默认是按照每个bucket的doc_count降序来排的,如果不指定就是这样排序。 但是假如说,我们现在统计出来每个颜色的电视的销售额,需要按照销售额降序排序,这样就需要自定义排序规则了。 语法: GET /tvs/sales/_search { "size": 0, "aggs": {"group_by_color"... 阅读全文
posted @ 2018-03-09 20:23 outback123 阅读(295) 评论(0) 推荐(0) 编辑
摘要: 主要知识点: 搜索+聚合 过滤+聚合 需求是:找出所有价格大于1200元的电视,然后对之些电视求平均价格 语法: GET /tvs/sales/_search { "size": 0, "query": { "constant_score": {"filter": {"range": {"price": {"gte": 1200}}}} }, "agg... 阅读全文
posted @ 2018-03-09 20:22 outback123 阅读(133) 评论(0) 推荐(0) 编辑
摘要: 主要知识点: _global bucket的使用 本例以搜索单个品牌和所有品牌的销量对比进行学习_global 。es在进行aggregation操作时都只只是在一个scope中进行聚合等操作,对于一个搜索+聚合的操作,那么这个聚合操作就必须在搜索操作所探索的结果范围内。因此就需要用到_global语法来对全部数据进行聚合。 本例要求得出两个结果,一个结果是基于... 阅读全文
posted @ 2018-03-09 20:21 outback123 阅读(309) 评论(0) 推荐(0) 编辑
摘要: 主要知识点 学习搜索+聚合的知识 本节学习搜索+聚合知识,也就是搜索和聚合结合起来使用。类似于mysql中的 select count(*) from tvs.sales where brand like "%小米%" group by color 在es 任何的聚合,都必须在搜索出来的结果数据中之行,搜索结果就是聚合分析操作的scope 语法: ... 阅读全文
posted @ 2018-03-09 20:20 outback123 阅读(177) 评论(0) 推荐(0) 编辑
摘要: 主要知识点: data_historgram之后再进行下钻分析。 语法: GET /tvs/sales/_search { "size": 0, "aggs": { "group_by_sold_date": { "date_histogram": { "field": "sold_date", "interval":... 阅读全文
posted @ 2018-03-09 20:19 outback123 阅读(335) 评论(0) 推荐(0) 编辑
摘要: 主要知识点: date hitogram之统计每月电视销量 上一节讲到histogram,他是以数值进行分组。本节讲到以日期进行bucket分组操作,也就是说把连续的日期变成离散的日期区间,然后进行聚合分析操作。date histogram,按照我们指定的某个date类型的日期field,以及日期interval,按照一定的日期间隔,去划分bucket。 语法: ... 阅读全文
posted @ 2018-03-09 20:18 outback123 阅读(264) 评论(0) 推荐(0) 编辑
摘要: 主要知识点 histogram的理解及用法 histogram:他的作用是把一些连续的数据划分为一定的区间范围,使用连续的数据离散化,然后这这样离散化的数据就可以做聚合分析操作,操作过程类似于terms,接收一个field,按照这个field的值划分区间,然后根据区间进行bucket分组操作。histogram的语法如下: "histogram":{ "field... 阅读全文
posted @ 2018-03-09 20:17 outback123 阅读(1105) 评论(0) 推荐(0) 编辑
摘要: 主要知识点: 分组聚合操作—嵌套bucket。 本讲以前面电商实例,从颜色到品牌进行下钻分析,每种颜色的平均价格,以及找到每种颜色每个品牌的平均价格。 比如说,现在红色的电视有4台,同时这4台电视中,有3台是属于长虹的,1台是属于小米的,那么: 红色电视中的3台长虹的平均价格是多少? 红色电视中的1台小米的平均价格是多少? 下钻的意思是,已经... 阅读全文
posted @ 2018-03-09 20:16 outback123 阅读(433) 评论(0) 推荐(0) 编辑
摘要: 课程大纲 要学其他的metric(count,avg,max,min,sum) count:bucket,terms,自动就会有一个doc_count,就相当于是count avg:avg aggs,求平均值 max:求一个bucket内,指定field值最大的那个数据 min:求一个bucket内,指定field值最小的那个数据 sum:求一个bucket内,指定f... 阅读全文
posted @ 2018-03-09 20:16 outback123 阅读(179) 评论(0) 推荐(0) 编辑
摘要: 主要知识点: bucket+metric 计算分种颜色的电视的平均价格 语法: GET /tvs/sales/_search { "size" : 0, "aggs": { "colors": { "terms": { "field": "color" }, "aggs": { ... 阅读全文
posted @ 2018-03-09 20:15 outback123 阅读(382) 评论(0) 推荐(0) 编辑
摘要: 主要知识点: 学习聚合知识 一、准备数据 1、家电卖场案例背景建立index 以一个家电卖场中的电视销售数据为背景,来对各种品牌,各种颜色的电视的销量和销售额,进行各种各样角度的分析 PUT /tvs { "mappings": { "sales": { "properties": { "price": { "type": "long" }, "col... 阅读全文
posted @ 2018-03-09 20:14 outback123 阅读(310) 评论(0) 推荐(0) 编辑
摘要: 主要知识点, 修改IK分词器源码来基于mysql热更新词库 一、IK增加新词的原因 在第32小节中学习到了直接在es的词库中增加词语,来扩充自已的词库,但是这样做有以下缺点: (1)每次添加完,都要重启es才能生效,非常麻烦 (2)es是分布式的,可能有数百个节点,你不能每次都一个一个节点上面去修改 这一小节来学习让es不停机,直接在外部mysql中添加新的词语... 阅读全文
posted @ 2018-03-09 20:12 outback123 阅读(1050) 评论(0) 推荐(0) 编辑
摘要: 主要知识点: bucket与metric核心慨念 一、核心慨念 1、bucket:一个数据分组 比如有下面几条数据: city name 北京 小李 北京 小王 上海 小张 上海 小丽 上海 小陈 基于city划分buckets(基于city进行分组) 划分出来两个bucket,一个是北京bucket,一个是上海bucket... 阅读全文
posted @ 2018-03-09 20:12 outback123 阅读(344) 评论(0) 推荐(0) 编辑