yyds,Elasticsearch Template自动化管理新索引创建

news2024/11/26 21:31:29

文章目录

      • 一、什么是Elasticsearch Template?
      • 二、Elasticsearch Template的用法
        • 2.1、创建模板
        • 2.2、验证模板
        • 2.3、应用模板
        • 2.4、删除模板
        • 2.5、组合模板
        • 2.6、如何在同一个模板中定义多种匹配模式
        • 2.7、模板优先级
        • 2.8、提前模拟索引的最终映射
      • 三、Elasticsearch Template的优点

一、什么是Elasticsearch Template?

Elasticsearch Template是一种将预定义模板应用于新索引的功能。在索引创建时,它可以自动为新索引应用已定义的模板。Template功能可用于定义索引的映射、设置和别名等。它是一种自动化管理索引创建的方式,使用户可以在大量索引上快速而一致地应用模板。

二、Elasticsearch Template的用法

2.1、创建模板

使用PUT命令创建模板,语法如下:

PUT _template/my_template
{
  "index_patterns": ["logs-*"],
  "settings": {
    "number_of_shards": 3,
    "number_of_replicas": 2
  },
  "mappings": {
    "_source": {
      "enabled": true
    },
    "properties": {
      "timestamp": {
        "type": "date",
        "format": "yyyy-MM-dd HH:mm:ss"
      },
      "message": {
        "type": "text"
      },
      "user": {
        "type": "keyword"
      }
    }
  },
  "aliases": {
    "logs_write": {},
    "logs_read": {}
  }
}

在上面的代码中,我们定义了一个模板名称为“my_template”,并将其应用于索引名称为“logs-*”的所有索引。在模板中,我们定义了索引的设置、映射和别名等。一旦使用创建索引的命令,只要索引的名称匹配logs-,就能够自动匹配这个模板,进行索引的设置。

2.2、验证模板

使用GET命令来检索已创建的模板,语法如下:

GET _template/my_template

使用GET命令来检索名称为“my_template”的模板。如果模板已创建,则会显示模板详细信息,否则会返回404错误。

2.3、应用模板

创建一个新的索引,索引名为"logstash-2023.03.01"的索引,它符合"logstash-*"模式,并且具有与模板中定义的相同的字段映射、分片数等设置。

PUT logstash-2021.03.01

还支持类似以下模式,使用Date Math将当前日期格式化为所需的日期格式,并将其用作索引名称的一部分,以下代码创建一个名为"logstash-2022.03.09"的索引,并将其日期设置为2023年3月9日,同样匹配"logstash-*"模式,自动应用模板。

PUT logstash-<now/d{yyyy.MM.dd}>
{
  "timestamp": "2023-03-09T00:00:00"
}

如果想每天自动创建新的索引,可以使用定时任务(例如Cron)来定期执行创建索引的命令。例如,在Linux上,您可以使用以下Cron表达式来每天创建一个新索引:

0 0 * * * curl -XPUT 'http://localhost:9200/my_index-<now/d{yyyy.MM.dd}>' -H 'Content-Type: application/json' -d '{"timestamp": "'$(date +%Y-%m-%dT00:00:00)'"}'

上面的命令将在每天的0点创建一个新的索引,并将其日期设置为当天的日期。注意要将命令中的"localhost:9200"替换为Elasticsearch实例的实际地址。

通过使用索引模板和日期格式化,可以轻松自动创建具有固定日期的索引,并避免手动创建索引带来的繁琐和错误。

2.4、删除模板

使用DELETE命令来删除模板,语法如下:

DELETE _template/my_template

在上面的代码中,我们使用DELETE命令来删除名称为“my_template”的模板。如果模板已删除,则会返回200响应;否则,将返回404错误。

2.5、组合模板

可以使用模板继承的方式来组合多个模板。比如,你以定义一个基础模板,然后在其他模板中引用它,从而获得基础模板的所有属性和设置。

可以使用以下方法来实现,首先先使用以下命令定义一个名为base-template的基础模板.

PUT _template/base-template
{
  "index_patterns": ["my-index-*"],
  "settings": {
    "number_of_shards": 1
  },
  "mappings": {
    "_doc": {
      "properties": {
        "field1": {
          "type": "text"
        }
      }
    }
  }
}

再定义一个名为my-template的子模板,并通过"template": {"name": "base-template"}属性引用了base-template。子模板可以覆盖基础模板中的任何设置或属性。

PUT _template/my-template
{
  "index_patterns": ["my-index-*"],
  "template": {
    "name": "base-template"
  },
  "settings": {
    "number_of_replicas": 2
  },
  "mappings": {
    "_doc": {
      "properties": {
        "field2": {
          "type": "keyword"
        }
      }
    }
  }
}

2.6、如何在同一个模板中定义多种匹配模式

可以使用通配符来指定多个索引模式。例如,你可以使用"index_patterns": ["index-A-*", "index-B-*"]来同时定义index-A-*index-B-*这两个索引模式,所有匹配这两种模式的,都具有一样的索引设置和映射。

PUT _template/template_A_B
{
  "index_patterns": ["my-index-*", "your-index-*"],
  "order":1,
  "settings": {
    "number_of_shards": 1
  },
  "mappings": {
    "_doc": {
      "properties": {
        "field1": {
          "type": "text"
        }
      }
    }
  }
}

2.7、模板优先级

如果某一个索引匹配了两个不同的模板,那么到底应该引用哪一个模板呢?实际上,如果两个模板都匹配了,那么索引会继承所有的模板设置,如果相同字段设置存在冲突时,会用更高优先级的模版设置覆盖更低优先级的模版设置,如果两个模板的优先级一样,则到底引用谁是不确定的,所以必须要考虑好优先级问题。

在模板中优先级通过order字段进行设置,字段类型为数字,数字越大则优先级越高。

2.8、提前模拟索引的最终映射

Elasticsearch提供了simulation APIs用于提前模拟索引匹配模板,输出最终的设置和映射等信息,这可以用于正式创建索引之前进行确认工作,以确保创建的多个模板能够满足index创建的需求。

POST /_index_template/_simulate_index/my-index-000001

以上所示,使用simulate API模拟创建my-index-000001索引,输出结果类似如下,可以看出匹配的模板和相关的设置、映射。verlapping指出了一个匹配的模板,但是其优先级更低。

{
  "template" : {
    "settings" : {
      "index" : {
        "number_of_shards" : "3",   
        "number_of_replicas" : "0",
        "routing" : {
          "allocation" : {
            "include" : {
              "_tier_preference" : "data_content"
            }
          }
        }
      }
    },
    "mappings" : {
      "properties" : {
        "@timestamp" : {
          "type" : "date"           
        }
      }
    },
    "aliases" : { }
  },
  "overlapping" : [
    {
      "name" : "template_1",        
      "index_patterns" : [
        "my*"
      ]
    }
  ]
}

三、Elasticsearch Template的优点

Elasticsearch Template功能的应用场景很广泛,以下是一些常见的用例:

  1. 维护索引一致性:当用户需要创建多个相似的索引时,使用模板可以确保这些索引的设置和映射都是一致的。
  2. 减少错误:使用模板可以减少人为错误的可能性,因为模板可以强制执行特定的索引结构。
  3. 提高效率:使用模板可以节省时间和精力,因为用户不需要手动为每个索引设置相同的映射和设置。
  4. 管理别名:使用模板可以轻松地为索引定义别名,从而可以更方便地管理和查询索引。

总之,Elasticsearch Template是一种简单而有用的功能,它可以使用户更轻松地管理和维护Elasticsearch索引。当用户需要在多个相似的索引上执行相同的操作时,使用模板可以提高效率并减少人为错误。此外,模板还可以帮助用户维护索引的一致性,并且可以轻松地为索引定义别名,从而使索引更易于管理和查询。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/402901.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Python多线程详解

文章目录1. 多线程2. 创建线程2.1 直接创建2.2 继承创建3. 守护线程4. 阻塞线程5. 线程锁5.1 互斥锁(Lock)5.2 递归锁(RLock)5.3 信号量(Semaphore)5.4 事件(Event)6. ThreadLocal7. 线程池7.1 基本使用7.2 as_completed 方法7.3 wait方法7.4 map方法8. Python线程真相参考文章…

linux时间的特殊用法

今天介绍linux下Date时间命令相关的特殊用法 date (当前的时间) 修改系统当前时间&#xff1a; date -s "2022-6-20 9:33:50" 昨天的时间是我们比较常用的&#xff1a; date -d "yesterday" %Y%m%d ( 昨天的时间) date -d "1 day ago" %Y%m%d …

如何写一个简单的爬虫

学习爬虫重要的是知识储备以及实战能力&#xff0c;最近有个学妹要求我帮她写一个爬虫程序&#xff0c;我将我编写的爬虫代码以及解释都记录下来&#xff0c;方便后期更多的伙伴们学习参考。 前置知识-爬虫定义 爬虫指的是一种自动化程序&#xff0c;用于在互联网上获取和抓取…

VB6换个思路解决微信下载文件只读的问题(含源码)

日期&#xff1a;2023年3月10日 作者&#xff1a;Commas 签名&#xff1a;(ง •_•)ง 积跬步以致千里,积小流以成江海…… 注释&#xff1a;如果您觉得有所帮助&#xff0c;帮忙点个赞&#xff0c;也可以关注我&#xff0c;我们一起成长&#xff1b;如果有不对的地方&#xf…

Android Framework——zygote 启动 SystemServer

概述 在Android系统中&#xff0c;所有的应用程序进程以及系统服务进程SystemServer都是由Zygote进程孕育&#xff08;fork&#xff09;出来的&#xff0c;这也许就是为什么要把它称为Zygote&#xff08;受精卵&#xff09;的原因吧。由于Zygote进程在Android系统中有着如此重…

docker使用教程(装linux比虚拟机方便)

目录 一、介绍 二、使用 1.下载操作系统 2.查看docker内的容器有哪些 3. 运行指定容器 4.进入容器 ​1.attach进入容器&#xff08;输入容器ID前4位&#xff09; 2.exec进入容器&#xff08;可以输入ID或者NAMES&#xff09; 5.退出容器 6.在宿主机器和容器之间拷贝文…

时间同步Chrony

时间同步chrony一、Chrony时间服务1、Chrony介绍2、Chrony优点二、配置Chrony服务三、验证一、Chrony时间服务 1、Chrony介绍 chrony 是基于NPT协议的实现时间同步服务&#xff0c;它既可以当做服务端&#xff0c;也可以充当客户端。chrony是ntp的代替品&#xff0c;能更精确…

数据传输服务DTS(阿里巴巴)

数据传输服务DTS(阿里巴巴) 什么是数据传输服务DTS 数据传输服务DTS&#xff08;Data Transmission Service&#xff09;是阿里云提供的实时数据流服务&#xff0c;支持关系型数据库&#xff08;RDBMS&#xff09;、非关系型的数据库&#xff08;NoSQL&#xff09;、数据多维分…

CentOS 7 使用 Composer 配置 phpmyadmin 并管理多个mysql

phpMyAdmin 中文文档 准备工作 CentOS 7 yum 方式安装 phpCentOS 7 安装 Apache HTTP Server安装Composer 安装 phpMyAdmin 按照官方文档 用Composer安装 要安装phpMyAdmin&#xff0c;只需运行&#xff1a; composer create-project phpmyadmin/phpmyadmin 建立网站配置文…

skywalking部暑(zookeeper、kafka、elasticsearch)

服务器IP部暑角色192.168.11.100zookeeper kafka elasticsearch 一、docker部暑 。。。 二、.安装Zookeeper path/data/zookeeper mkdir -p ${path}/{data,conf,log} chown -R 1000.1000 ${path}echo "0" > ${path}/data/myid #zookeeper配置文件 cat > ${p…

Gitee初练 --- 问题合集(一)

Gitee一、Windows找不到gpedit.msc请确定文件名是否正确的提示二、windows 10 凭据无法保存三、解决 git pull/push 每次都要输入用户名密码的问题一、Windows找不到gpedit.msc请确定文件名是否正确的提示 就随便在一个地方建立一个文本文件&#xff0c;将一下内容复制进去 e…

从0-1超详细教你使用nginx打包部署静态资源,以及hash和history配置汇总

首先呢&#xff0c;我们要有以下几个方面的知识和操作&#xff0c;来实现项目部署 第一&#xff1a;我们要搭建nginx部署基础环境 具体流程可参考这个链接从0-1超详细教你实现前端代码nginx部署全流程 第二&#xff1a;我们要知道前端路由hash和history实现以及区别 路由功…

Reactor响应式流的核心机制——背压机制

响应式流是什么&#xff1f; 响应式流旨在为无阻塞异步流处理提供一个标准。它旨在解决处理元素流的问题——如何将元素流从发布者传递到订阅者&#xff0c;而不需要发布者阻塞&#xff0c;或订阅者有无限制的缓冲区或丢弃。 响应式流模型存在两种基本的实现机制。一种就是传统…

【OpenAI 多模态预训练】VideoGPT?微软透露GPT-4或将在下周发布

【多模态预训练】VideoGPT&#xff1f;微软透露GPT-4或将在下周发布 先让我猜个名字&#xff0c;VideoGPT&#xff1f; 太绝了&#xff01;看完ChatGPT之后就感觉OpenAI正在做多模态的预训练语言模型。万万没想到来的这么快。据介绍&#xff0c;GPT-4或将为多模态大模型&#…

redis经典五种数据类型及底层实现

目录一、Redis源代码的核心部分1.redis源码在哪里2.src源码包下面该如何看&#xff1f;二、我们平时说redis是字典数据库KV键值对到底是什么1.6大类型说明(粗分)2.6大类型说明3.上帝视角4.Redis定义了redisObject结构体4.1 C语言struct结构体语法简介4.2 字典、KV是什么4.3 red…

jsp毕业答辩管理系统Myeclipse开发mysql数据库web结构java编程计算机网页项目

一、源码特点 JSP 毕业答辩管理系统是一套完善的java web信息管理系统&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为TOMCAT7.0,Myeclipse8.5开发&#xff0c;数据库为Mysql5.0&…

Spring Security基础入门

基础概念 什么是认证 认证&#xff1a;用户认证就是判断一个用户的身份身份合法的过程&#xff0c;用户去访问系统资源的时候系统要求验证用户的身份信息&#xff0c;身份合法方可继续访问&#xff0c;不合法则拒绝访问。常见的用户身份认证方式有&#xff1a;用户密码登录&am…

基于java的网络选课商城项目部署

前言&#xff1a;相信看到这篇文章的小伙伴都或多或少有一些编程基础&#xff0c;懂得一些linux的基本命令了吧&#xff0c;本篇文章将带领大家服务器如何部署一个使用django框架开发的一个网站进行云服务器端的部署。 文章使用到的的工具 Python&#xff1a;一种编程语言&…

SAP 生产订单收货入库Goods Receipt

Goods Receipt: 收货这块比较简单&#xff0c;当我们做完报工之后&#xff0c;成品就可以入库了。 那么收货完了&#xff0c;到底会有什么样的影响呢&#xff1f; 会产生物料凭证以及会计凭证&#xff0c;但是若订单中勾选”GR非股价的“&#xff0c;则不会有价值。 这里我们需…

E1. Unforgivable Curse (easy version) #855 div3

ps&#xff1a;很久没有更新啦&#xff0c;之前一直在复习准备期末考试&#xff0c;也没怎么写题。现在考完要恢复训练啦 Problem - E1 - Codeforces 题意&#xff1a; 两个字符串s和t&#xff0c;在s中任意两个间隔为k或者k1的字母可以进行任意次的交换&#xff0c;问你可不…