ElasticStack学习(八):ElasticSearch索引模板与聚合分析初探
一、Index Template与Dynamic Template的概念
1、Index Template:它是用来根据提前设定的Mappings和Settings,并按照一定的规则,自动匹配到新创建的索引上。
1)模板仅是一个索引被创建时才会起作用,修改模板并不会影响已创建的索引;
2)可以设定多个索引模板,这些设置会被merge在一起;
3)通过指定order的数值,控制merge的过程;
2、Index Template的工作方式如下:
当一个索引被创建时,会执行如下操作:
1)应用ElasticSearch默认的Mappings和Settings;
2)应用order数值低的Index Template中的设定;
3)应用order数值高的Index Template中的设定,之前的设定会被覆盖;
4)创建索引时,用户此时进一步指定了索引的Mappings和Settings,那么覆盖之前模板中的设定;
3、Dynamic Template:根据ElasticSearch识别的数据类型,结合字段名称,动态设定字段类型。
1)例如:所有的字符串类型可以设定成keyword,或者关闭keyword字段;
2)例如:凡是Is开头的字段都设置成Boolean;
3)例如:凡是Long开头的都设置成Long;
如下图所示:
Dynamic Template是定义在索引的Mappings中的,有一个模板名称,匹配规则是一个数组,同时可以将符合规则的字段进行Mapping。
二、Index Template与Dynamic Template使用
1、Index Template
1)通过创建一个dynamic mapping的索引,会发现日期类型推断成功,而数值类型被推断成text类型。
2)创建一个可以识别以test字符开头的索引模板,同时将日期识别设置为false,将数值识别设置为true。会发现日期会推断为text类型,数值类型推断正常。
3)在创建索引时,设置settings的值,会覆盖模板设置信息。
2、Dynamic Template
创建的索引进行mappings设置
通过对mapping信息的读取可以发现,is开头的字段是boolean类型,duty字段是keyword类型,匹配name开头的字段,将信息可以copy_to到fullname字段中,不匹配middle后缀的字段信息。
当对fullname字段搜索关于middle字段的信息时,搜索不到结果,当搜索first或者lastname时,可以搜索到结果。
三、聚合的说明(Aggregation)
1、ElasticSearch聚合的优势
1)ElasticSearch除了搜索外,还提供了针对ElasticSearch数据进行统计分析的功能;
相对于Hadoop而言,ElasticSearch在这方面实时性高,比Hadoop的T+1更及时。
2)通过聚合,会得到一个数据的概览,这样就可以分析和总结全套的数据,而不是仅仅能寻找单个文档;
3)易用性,只需要一条语句,就可以从ElasticSearch中得到分析结果,从而避免在客户端实现分析逻辑;
2、聚合的分类
1)Bucket Aggregation:一些列满足特定条件的文档集合,其相当于SQL中的Group By;
2)Metric Aggregation:一些数学运算,可以对文档字段进行统计分析;
其相当于SQL中对于字段进行运算的函数,如Sum、Count等。它除了可以在字段上进行计算,还可以在脚本产生的结果上进行计算。
大多数Metric是数学计算,输出一个值,如:min/max/sum/avg/cardinality。
部分支持输出多个值,如:stats/percentiles/percentile_ranks。
3)Pipeline Aggregation:对其他的聚合结果进行二次聚合;
4)Matrix Aggregation:支持对多个字段的操作并提供一个结果矩阵;
3、聚合的使用
1)Bucket Aggregation
2)Metric Aggregation
注意:在做聚合分析时,应将aggs前面的size设置为0,否则会返回查询结果,而不是聚合结果。如果写成20,聚合结果也能统计出来,只是在查询结果的后面。
大家可关注我的公众号
知识学习来源:阮一鸣:《Elasticsearch核心技术与实战》
ElasticStack学习(八):ElasticSearch索引模板与聚合分析初探的更多相关文章
- Elasticsearch索引模板-转载
转载地址:https://dongbo0737.github.io/2017/06/13/elasticsearch-template/#similar_posts Elasticsearch索引模板 ...
- elasticsearch系列六:聚合分析(聚合分析简介、指标聚合、桶聚合)
一.聚合分析简介 1. ES聚合分析是什么? 聚合分析是数据库中重要的功能特性,完成对一个查询的数据集中数据的聚合计算,如:找出某字段(或计算表达式的结果)的最大值.最小值,计算和.平均值等.ES作为 ...
- ElasticSearch 简单的 搜索 聚合 分析
一. 搜索1.DSL搜索 全部数据没有任何条件 GET /shop/goods/_search { "query": { "match_all": {} } } ...
- Elasticsearch索引模板和别名
创建模板(模板名和索引名一样都不能有大写) PUT http://222.108.x.x:9200/_template/templateds { "template": " ...
- Oracle索引梳理系列(八)- 索引扫描类型及分析(高效索引必备知识)
版权声明:本文发布于http://www.cnblogs.com/yumiko/,版权由Yumiko_sunny所有,欢迎转载.转载时,请在文章明显位置注明原文链接.若在未经作者同意的情况下,将本文内 ...
- Elasticsearch7.X 入门学习第八课笔记-----索引模板和动态模板
原文:Elasticsearch7.X 入门学习第八课笔记-----索引模板和动态模板 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接: ...
- Elasticsearch学习笔记——索引模板
在索引模板里面,date类型的字段的format支持多种类型,在es中全部会转换成long类型进行存储,参考 https://zhuanlan.zhihu.com/p/34240906 一个索引模板范 ...
- ElasticSearch(六):索引模板
ElasticSearch(六):索引模板 学习课程链接<Elasticsearch核心技术与实战> Index Template Index Template - 帮助你设定Mappin ...
- ES 10 - Elasticsearch的索引别名和索引模板
目录 1 索引模板概述 1.1 什么是索引模板 1.2 索引模板中的内容 1.3 索引模板的用途 2 创建索引模板 3 查看索引模板 4 删除索引模板 5 模板的使用建议 5.1 一个index中不能 ...
随机推荐
- OC笔记一:Objective
1.OC简介 全称:Objective-C,是扩充C的面向对象编程语言,主要用于iOS和Mac OS开发. C语言的基础上,增加了一层最小的面向对象语法 完全兼容C语言 可以在OC代码中混入C语言代码 ...
- linux安装脚本
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 3 ...
- SqlServer批量压缩数据库日志-多数据库批量作业,批量备份还原
原文:SqlServer批量压缩数据库日志-多数据库批量作业,批量备份还原 --作业定时压缩脚本 多库批量操作 DECLARE @DatabaseName NVARCHAR(50) DECLARE @ ...
- 笔记:认识.NET平台
认识.NET平台先了解一堆技术术语和缩写 http://www.cnblogs.com/dbycl/p/6419456.html 天生不跨平台的.NET Framework 2.大家都来开发新语言 3 ...
- Qt4编译生成VS静态库(静态编译),有三个bat文件 good
开发环境:vs2008+Qt4.8.4源码库 其他环境请自己尝试,原理应该是差不多的 Qt编译生成静态库 1. 本教程只针对在win32平台,使用VS开发工具(例子以VS2008为例) ...
- BSTR使用误区以及隐藏的内存破坏和内存泄漏
BSTR使用误区以及隐藏的内存破坏和内存泄漏 作者:magictong 简介 BSTR的数据结构是什么样子并不是本文讨论的问题,但是却是本文的基础.在解决COM的跨平台编程的问题时,需要定义一种通用的 ...
- Qt的槽可以使用默认参数
引用自:http://www.ibm.com/developerworks/cn/linux/guitoolkit/qt/signal-slot/ 的一篇经典文章,是关于Qt的信号和槽的分析的.看年份 ...
- DataVeryLite入门教程(一) 配置篇
DataVeryLite 是基于.net 4.0的数据库持久化ORM框架. 目前支持的数据库有Sqlserver,Mysql,Oracle,Db2,PostgreSql,Sqlite和Access. ...
- 这里有123个黑客必备的Python工具!
123个Python渗透测试工具,当然不仅于渗透~ 如果你想参与漏洞研究.逆向工程和渗透,我建议你时候用Python语言.Python已经有很多完善可用的库,我将在这里把他们列出来. 这个清单里的工具 ...
- Spark之从hdfs读取数据
/user/hive/warehouse/ycapp.db/appindex") ), e(),e().toInt)) (String, String, String) ,,all_post ...