使用jq批量修改es index template的lifecycle配置:修订间差异

来自三线的随记
(创建页面,内容为“aka: use jq tool to modify es index template lifecycle setting in bulk #!/bin/bash #set -exu set -ue #172.31.45.236 host="127.0.0.1:9200" username="elastic" p…”)
 
无编辑摘要
 
(未显示同一用户的6个中间版本)
第1行: 第1行:
aka: use jq tool to modify es index template lifecycle setting in bulk
aka: use jq tool to modify es index template lifecycle setting in bulk
新版本的es index template不支持通过结合索引匹配+优先级配置的方式来叠加批量修改已存在的索引模版(legacy template 支持),只支持通过compose实现类似用法,部分场景会带来大量的搬砖成本(例如修改skywalking的索引模板中的生命周期配置或者索引副本数配置)
引入脚本:
  #!/bin/bash
  #!/bin/bash
  #set -exu
  #set -exu
  set -ue
  set -ue
#172.31.45.236
  host="127.0.0.1:9200"
  host="127.0.0.1:9200"
  username="elastic"
  username="elastic"
第16行: 第19行:
  es_sw_templates=`curl ${curl_options[@]} "$host/_cat/templates/sw*?s=name" | awk '{print $1}'`
  es_sw_templates=`curl ${curl_options[@]} "$host/_cat/templates/sw*?s=name" | awk '{print $1}'`
  # bak
  # bak
  curl ${curl_options[@]} "${host}/_index_template?pretty" > es-${host}-sw-*-templates_`date +%F%T`.bak.json
  curl ${curl_options[@]} "${host}/_index_template?pretty" > es-${host}-index-templates_`date +%F%T`.bak.json
   
   
  for template in ${es_sw_templates[@]}
  for template in ${es_sw_templates[@]}
第25行: 第28行:
   curl -X PUT -H "Content-Type: application/json" ${curl_options[@]} "${host}/_index_template/${template}" -d "${new_template}"
   curl -X PUT -H "Content-Type: application/json" ${curl_options[@]} "${host}/_index_template/${template}" -d "${new_template}"
   echo
   echo
  done
  done
[[分类:Elasticsearch]]
[[分类:Elasticsearch]]
[[分类:Linux]]
[[分类:Linux]]
{{DEFAULTSORT:jq}}
{{DEFAULTSORT:jq}}

2023年1月24日 (二) 22:32的最新版本

aka: use jq tool to modify es index template lifecycle setting in bulk

新版本的es index template不支持通过结合索引匹配+优先级配置的方式来叠加批量修改已存在的索引模版(legacy template 支持),只支持通过compose实现类似用法,部分场景会带来大量的搬砖成本(例如修改skywalking的索引模板中的生命周期配置或者索引副本数配置)

引入脚本:

#!/bin/bash
#set -exu
set -ue
host="127.0.0.1:9200"
username="elastic"
password="elastic"
ilm_name="sw-default-ilm"

curl_options=(
  "-u" "$username:$password"
  "-s"
)

es_sw_templates=`curl ${curl_options[@]} "$host/_cat/templates/sw*?s=name" | awk '{print $1}'`
# bak
curl ${curl_options[@]} "${host}/_index_template?pretty" > es-${host}-index-templates_`date +%F%T`.bak.json

for template in ${es_sw_templates[@]}
do
  echo PUT /_index_template/${template}
  new_template=""
  new_template=`curl ${curl_options[@]} "${host}/_index_template/${template}" | jq '.index_templates[0].index_template |  .template.settings.index.lifecycle.name |= "'${ilm_name}'"'`
  curl -X PUT -H "Content-Type: application/json" ${curl_options[@]} "${host}/_index_template/${template}" -d "${new_template}"
  echo
done