elasticsearch自动按天创建索引脚本
elasticsearch保存在一个索引中数据量太大无法查询,现在需要将索引按照天来建,查询的时候关联查询即可
有时候es集群创建了很多索引,删不掉,如果是测试环境或者初始化es集群(清空所有数据),可以直接关掉elastic进程,然后删除nodes下面的所有数据,再次启动集群即可,记录一下避免忘记
导出mapping信息放到/root/index_mapping目录下
1.导出的语句
yum install epel-release -y
yum install nodejs -y
yum install nodejs npm -y
npm install elasticdump -y
/root/node_modules/elasticdump/bin/elasticdump --ignore-errors=true --scrollTime=120m --bulk=true --input=http://10.30.138.62:9200/.kibana --output=mapping.json --type=mapping
2.创建索引的脚本如下
#!/bin/bash # 1.创建今天和明天的索引 # 2.删除3天以前的索引 today_date=`date '+%Y%m%d'` tomorrow_date=`date -d tomorrow +%Y%m%d` # 需要导入索引的es集群服务器ip es_ip=10.10.33.84 # 找到具体的index目录和index,对这个index进行处理 # start log echo "${today_date} create index start">> /data/scripts/create_index.log for FULLPATH in `ls /root/index_mapping/*.json`; do # 文件名 FILE=${FULLPATH##*/} # 去掉文件名后缀 FILE_NAME=${FILE%%.*} # 找到类似push:user:req的索引名称 FILE_INDEX=`echo $FILE_NAME|sed 's/_/:/g'` FILE_INDEX_NAME=${FILE_INDEX%:*} echo "create index ${FILE_INDEX_NAME} start" >> /data/scripts/create_index.log /root/node_modules/elasticdump/bin/elasticdump --input=${FULLPATH} --output=http://${es_ip}:9200/${FILE_INDEX_NAME}:${today_date} --type=mapping /root/node_modules/elasticdump/bin/elasticdump --input=${FULLPATH} --output=http://${es_ip}:9200/${FILE_INDEX_NAME}:${tomorrow_date} --type=mapping # /root/node_modules/elasticdump/bin/elasticdump --input=${FULLPATH} --output=http://${es_ip}:9200/${FILE_INDEX_NAME}:20170905 --type=mapping # /root/node_modules/elasticdump/bin/elasticdump --input=${FULLPATH} --output=http://${es_ip}:9200/${FILE_INDEX_NAME}:20170904 --type=mapping # /root/node_modules/elasticdump/bin/elasticdump --input=${FULLPATH} --output=http://${es_ip}:9200/${FILE_INDEX_NAME}:20170903 --type=mapping # /root/node_modules/elasticdump/bin/elasticdump --input=${FULLPATH} --output=http://${es_ip}:9200/${FILE_INDEX_NAME}:20170906 --type=mapping done # end log echo "${today_date} create index end">> /data/scripts/create_index.log three_daysago=`date -d '3 days ago' +%Y%m%d` echo $three_daysago echo "delete index ${three_daysago} start" >> /data/scripts/create_index.log curl -XDELETE "http://10.10.33.84:9200/*${three_daysago}*" echo "delete index ${three_daysago} end" >> /data/scripts/create_index.log
某些索引特殊处理,改进后的脚本
#!/bin/bash # 1.创建今天和明天的索引 # 2.删除3天以前的索引 today_date=`date '+%Y%m%d'` tomorrow_date=`date -d tomorrow +%Y%m%d` today_month=`date '+%Y%m'` # 需要导入索引的es集群服务器ip es_ip=10.10.33.84 # 找到具体的index目录和index,对这个index进行处理 # start log echo "${today_date} create index start">> /data/scripts/create_index.log for FULLPATH in `ls /root/index_mapping/*.json`; do # 文件名 FILE=${FULLPATH##*/} # 去掉文件名后缀 FILE_NAME=${FILE%%.*} # 找到类似push:user:req的索引名称 FILE_INDEX=`echo $FILE_NAME|sed 's/_/:/g'` FILE_INDEX_NAME=${FILE_INDEX%:*} echo "create index ${FILE_INDEX_NAME} start" >> /data/scripts/create_index.log /root/node_modules/elasticdump/bin/elasticdump --input=${FULLPATH} --output=http://${es_ip}:9200/${FILE_INDEX_NAME}:${today_date} --type=mapping /root/node_modules/elasticdump/bin/elasticdump --input=${FULLPATH} --output=http://${es_ip}:9200/${FILE_INDEX_NAME}:${tomorrow_date} --type=mapping # /root/node_modules/elasticdump/bin/elasticdump --input=${FULLPATH} --output=http://${es_ip}:9200/${FILE_INDEX_NAME}:20170905 --type=mapping # /root/node_modules/elasticdump/bin/elasticdump --input=${FULLPATH} --output=http://${es_ip}:9200/${FILE_INDEX_NAME}:20170904 --type=mapping # /root/node_modules/elasticdump/bin/elasticdump --input=${FULLPATH} --output=http://${es_ip}:9200/${FILE_INDEX_NAME}:20170903 --type=mapping # /root/node_modules/elasticdump/bin/elasticdump --input=${FULLPATH} --output=http://${es_ip}:9200/${FILE_INDEX_NAME}:20170906 --type=mapping done # end log echo "${today_date} create index end">> /data/scripts/create_index.log three_daysago=`date -d '3 days ago' +%Y%m%d` echo $three_daysago echo "delete index ${three_daysago} start" >> /data/scripts/create_index.log # 索引保留3天 curl -XDELETE "http://${es_ip}:9200/voice*${three_daysago}*" curl -XDELETE "http://${es_ip}:9200/script*${three_daysago}*" curl -XDELETE "http://${es_ip}:9200/push*${three_daysago}*" curl -XDELETE "http://${es_ip}:9200/advert*${three_daysago}*" curl -XDELETE "http://${es_ip}:9200/user*${three_daysago}*" curl -XDELETE "http://${es_ip}:9200/speech*${three_daysago}*" curl -XDELETE "http://${es_ip}:9200/user*${three_daysago}*" echo "delete index ${three_daysago} end" >> /data/scripts/create_index.log # bin开头的索引保留7天 seven_daysago=`date -d '7 days ago' +%Y%m%d` echo $seven_daysago echo "delete index ${seven_daysago} start" >> /data/scripts/create_index.log curl -XDELETE "http://${es_ip}:9200/bin*${seven_daysago}*" echo "delete index ${seven_daysago} end" >> /data/scripts/create_index.log curl -XPUT "http://${es_ip}:9200/*${today_month}*/_settings" -d '{"number_of_replicas": 0}' echo "setting replication 0 ${today_date}" >> /data/scripts/create_index.log
查看索引结构的命令:
[root@u04es01 ~]# curl 10.19.142.99:9200/bin:user:task:20171230/_mapping?pretty { "bin:user:task:20171230" : { "mappings" : { "_default_" : { "properties" : { "appId" : { "type" : "keyword", "store" : true }, "taskFlag" : { "type" : "integer", "store" : true }, "taskId" : { "type" : "keyword", "store" : true }, "time" : { "type" : "date", "store" : true, "format" : "yyyy-MM-dd HH:mm:ss.SSS.Z" }, "uuid" : { "type" : "keyword", "store" : true } } } } } }
分类:
elasticsearch
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律