Elasticsearch索引自动套用模板
公司ELK系统目前的设置是每月自动将日志信息记录至新的索引中,将日志数据按月分索引保存,在扩展的ELK架构中,利Logstash对接rabbitmq,获取日志消息,自动持久化至Elasticsearch。而Elasticsearch存在一个关键问题就是索引的设置及字段的属性指定,最常见的问题就是,某个字段我们并不希望ES对其进行分词,但如果使用自动模板创建索引,那么默认是所有string类型的字段都会被分词的,因此必须要显式指定字段的not_analyzed属性,其它的比如控制索引的备份数,分片数等,也可以通过模板的套用来实现,并且模板可以通过通配符进行模糊匹配,即可对满足某一通配符的所有新建索引均套用统一模板,不需要为每个索引都建立模板。但也有一点局限性需要注意:模板在设置生效后,仅对ES集群中新建立的索引生效,而对已存在的索引及时索引名满足模板的匹配规则,也不会生效,因此如果需要改变现有索引的mapping信息,仍需要在正确的mapping基础上建立新的索引,并将数据从原索引拷贝至新索引,变更新索引别名为原索引这种方式来实现(改方法适用当前ES版本(1.7+~2.4+)),也许未来会有索引的直接迁移方案。
方案选择:
方案一:可对logstash配置output参数:

如下所示:

这种方案在logstash中指定模板文件,由logstash将template写入ES集群;
方案二:直接将template写入ES集群
通过ES提供的API,将JSON格式的template写入目标ES集群的_template路径,对新生成的所有符合过滤规则的索引直接套用该模板。
这里我直接选择了方案二,因为不想修改logstash的docker镜像中的配置文件...
模板的结构大致分四块吧:
第一部分:通用设置,主要是模板匹配索引的过滤规则,影响该模板对哪些索引生效;
第二部分:settings:配置索引的公共参数,比如索引的replicas,以及分片数shards等参数;
第三部分:mappings:最重要的一部分,在这部分中配置每个type下的每个field的相关属性,比如field类型(string,long,date等等),是否分词,是否在内存中缓存等等属性都在这部分配置;
第四部分:aliases:索引别名,索引别名可用在索引数据迁移等用途上。
典型的一个template如下所示:
{
"template": "ld.log-*",
"order":0,
"settings": {
"index.number_of_replicas": "1",
"index.number_of_shards": "5"
},
"mappings": {
"logs": {
"properties": {
"@timestamp": {
"type": "date",
"format": "strict_date_optional_time||epoch_millis"
},
"@version": {
"doc_values": true,
"index": "not_analyzed",
"type": "string"
},
"Exp": {
"doc_values": true,
"index": "not_analyzed",
"type": "string"
},
"Guid": {
"doc_values": true,
"index": "not_analyzed",
"type": "string"
},
"LogLevel": {
"type": "long"
},
"LogTime": {
"type": "date",
"format": "strict_date_optional_time||epoch_millis"
},
"LoggerName": {
"index": "not_analyzed",
"type": "string"
},
"Message": {
"doc_values": true,
"index": "not_analyzed",
"type": "string"
},
"ProcessId": {
"type": "long"
},
"StackTrace": {
"doc_values": true,
"index": "not_analyzed",
"type": "string"
},
"ThreadId": {
"type": "long"
},
"exp": {
"doc_values": true,
"index": "not_analyzed",
"type": "string"
},
"logLevel": {
"type": "long"
},
"logTime": {
"doc_values": true,
"index": "not_analyzed",
"type": "string"
},
"loggerName": {
"doc_values": true,
"index": "not_analyzed",
"type": "string"
},
"message": {
"doc_values": true,
"index": "not_analyzed",
"type": "string"
},
"processId": {
"type": "long"
},
"tags": {
"doc_values": true,
"index": "not_analyzed",
"type": "string"
},
"threadId": {
"type": "long"
}
}
}
},
"aliases": {
}
}
在这个JSON中可以清楚地看到四个部分,并且对string类型的fields设置了不进行默认分词信息。
将这个JSON内容作为PUT请求的BODY(如果是修改template则发送POST请求)发送至目标ES集群(需要指定template的名字,如下例的log_template):

成功后将返回如下信息:
{
"acknowledged": true
}
现在可以通过对集群_template目录直接发送请求(也可以加上template名称)来查看集群当前的模板信息:

按照如上步骤,template正常添加至ES集群之后,在新增索引之前,会自动与模板进行匹配,如果满足过滤条件,即可套用目标模板来新建索引。
Elasticsearch索引自动套用模板的更多相关文章
- Elasticsearch索引自动删除
简介 脚本分2部分,1部分查找符合条件的索引名,2脚本调用1脚本,进行删除操作 脚本 查找符合条件的,默认大于30天 # coding:utf-8 __author__ = 'Jipu FANG' f ...
- elasticsearch索引自动清理
一 es 基本操作 查看所有的索引文件: curl -XGET http://localhost:9200/_cat/indices?v GET /_cat/indices?v DELETE /fi ...
- Elasticsearch索引(company)_Centos下CURL增删改
目录 返回目录:http://www.cnblogs.com/hanyinglong/p/5464604.html 1.Elasticsearch索引说明 a. 通过上面几篇博客已经将Elastics ...
- ES3:ElasticSearch 索引
ElasticSearch是文档型数据库,索引(Index)定义了文档的逻辑存储和字段类型,每个索引可以包含多个文档类型,文档类型是文档的集合,文档以索引定义的逻辑存储模型,比如,指定分片和副本的数量 ...
- Elasticsearch索引和文档操作
列出所有索引 现在来看看我们的索引 GET /_cat/indices?v 响应 health status index uuid pri rep docs.count docs.deleted st ...
- Elasticsearch索引原理
转载 http://blog.csdn.net/endlu/article/details/51720299 最近在参与一个基于Elasticsearch作为底层数据框架提供大数据量(亿级)的实时统计 ...
- windows系统中 利用kibana创建elasticsearch索引等操作
elasticsearch之借用kibana平台创建索引 1.安装好kibana平台 确保kibana以及elasticsearch正常运行 2.打开kibana平台在Dev Tools 3.创建一个 ...
- Elasticsearch索引按月划分以及获取所有索引数据
项目中数据库根据月份水平划分,由于没有用数据库中间件,没办法一下查询所有订单信息,所有用Elasticsearch做订单检索. Elasticsearch索引和数据库分片同步,也是根据月份来建立索引. ...
- Elasticsearch入门教程(三):Elasticsearch索引&映射
原文:Elasticsearch入门教程(三):Elasticsearch索引&映射 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文 ...
随机推荐
- spring springMVC
spring是一个开源框架,是为了解决企业应用程序开发,功能如下 目的:解决企业应用开发的复杂性 功能:使用基本的javabean代替EJB,并提供了更多的企业应用功能 范围:任何java应用 总之: ...
- datatables中的Options总结(1)
datatables中的Options总结(1) 最近一直研究dataTables插件,下面是总结的所有的选项内容,用了帮助学习datatables插件. 这些选项的配置在$().Datatable( ...
- IIS服务器和xampp中的appche服务器端口冲突解决办法
今天在启动xampp中的appche的时候,发现以前能起来的现在起不来了.想到可能是最近配置的系统自带的IIS服务器把appche的端口给占用了. (appche和iis的默认端口号都是:80:) 问 ...
- linux中grep的应用
h3 { color: rgb(255, 255, 255); background-color: rgb(30,144,255); padding: 3px; margin: 10px 0px } ...
- SharePoint 2013 Designer 入门教程
SharePoint的使用中,SharePoint Designer是非常重要的工具,我们可以通过Designer设计页面.母版页,维护.管理站点,也可以定制列表表单.数据视图,设计工作流等等.下面总 ...
- SQL通过ContentTypeID找使用了内容类型的列表库
DECLARE) SET @ContentTypeID='0x1B452DB25E92A34DA3E35FC8731278D2' SELECT w.Title AS [Web Site], w.Ful ...
- ASP.NET的六大内置对象
ASP.NET 六大内置对象(System.Web.UI.Page类): 1.Response 2.Request 3.Server 4.Application 5.Session 6.Cooki R ...
- Angular版本1.2.4在IE11的IE8模式下出错解决方案
今天,群里一个兄弟抛出一个问题(如上),截图说明. 打断点调试下,貌似是console里面的log方法出错了,如下: 这个是console的log方法,为什么错呢,继续: 我们会发现,在这里是检测fu ...
- solr定时更新索引遇到的问题(SolrDataImportProperties Error loading DataImportScheduler properties java.lang.NullPointerException)
问题描述 报如下错误,很显然,问题原因:空指针异常: ERROR (localhost-startStop-1) [ ] o.a.s.h.d.s.SolrDataImportProperties ...
- mac 抓包工具charles v3.9.3 安装破解步骤
一.下载 先到它的官网http://www.charlesproxy.com/可下载到最新版本,这个下载有点慢,我已经将它放到网盘中了:http://pan.baidu.com/s/1skTXRIl ...