前言
本篇就是ES初级知识的最后一篇了,初识Index Template和Aggregation,发现这两块内容实在是至关复杂,在es提升中进行进一步探索。本篇简单了解一些它们是什么sql
Index Template
什么是Index Template
- Index Template - 帮助设定Mappings和Settings,并按照必定的规则,自动匹配到新建立的索引之上
- 模板仅在一个索引被新建立时,才会产生做用。修改模板不会影响已建立的索引
- 能够设定多个索引模板,这些设置会被“merge”在一块儿
- 能够指定“order”的数值,控制“merging”的过程
举例
规则:全部索引建立时候,主分片和副本分片都是1数组
索引以index开头的,就把replica设置成2,app
映射转换设置,关闭字符串自动转date,开启字符串自动转数字框架
工做方式
- 当一个索引被建立时
- 应用Elasticsearch默认的 settings 和 mappings
- 应用order数值低的Index Template中的设定
- 应用order高的Index Template中的设定,以前的设定会被覆盖
- 应用建立索引时,用户所指定的Setting和mapping,并覆盖以前模板的设定
Dynamic Template
- Dynamic Template是定义在某个索引的mapping中
- Template有一个名称
- 匹配规则是一个数组
- 为匹配到字段设置Mapping
简单了解,后续详细扩展less
Elasticsearch聚合分析
什么是聚合(Aggregation)
- Elasticsearch除搜索外,还可针对数据进行统计分析,这就是聚合
- 特色:实时性高
- 帮助进行搜索结果的过滤,无需再客户端进行分析逻辑了
- 应用:Kibana可视化报表-聚合分析
- 岗位分布
- 项目框架使用状况
- 薪水分布
- 地理位置分布
- 订单增加状况
- 等等···
- 经过聚合,可获得一个数据的概览,对全套的数据进行分析和总结,而不是寻找单个文档
- 如:客房数量
- 价格区间可预订的不一样星级酒店的数量
- 高性能,只要一条语句,就能够从Elasticsearch获得分析结果
集合的分类
Bucket Aggregation
Metric Aggregation
- 一些数据运算(最大最小平均值等),能够对文档字段进行统计分析
Pipeline Aggregation
Matrix Aggregation
Bucket & Metric
- Bucket - 一组知足条件的文档,相似于sql中的
group by
- Metric - 一些系列的统计方法,相似于sql中的
count
Bucket
如图:商品能够分为高中低档,而在高档桶中,又可分为好中差类型性能
- Elasticsearch提供了不少类型的Bucket,可用多种方式划分文档
按照不一样的目的地分桶,查询获得各个目的地统计结果3d
Metric
- Metric 基于数据集计算结果,除了支持在字段上进行计算,一样支持在脚本(painless script)产生的结果上进行计算
- 大可能是Metric是数学计算,仅输出一个值
- min / max / sum / avg / cardinality
- 部分metric支持输出多个数值
- state(统计值,高低同时输出)
- percentiles(百分位,根据百分位数输出不通知)
- percentile_ranks
如图,查看航班目的地的统计信息,获得均价,最高最低价格code
Matrix
可在多个字段上进行操做,基于请求文档的字段值,生成matrix结果。不一样于桶聚合和度量聚合,matrix暂不支持脚本操做。cdn
Pipeline
管道聚合,对其余聚合和相关度量的输出进行聚合。blog
总结
- Index Template能够定义Mappings和Settings,并自动的应用到新建立的索引之上,须要合理使用Index Template。
- Dynamic Template支持在具体的索引上指定规则,为新增长的字段指定相应的Mappings
- Elasticsearch提供了Bucket/Metric/Pipeline/Matrix四种方式的聚合