zoukankan      html  css  js  c++  java
  • 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
              }
            }
          }
        }
      }
    }
  • 相关阅读:
    xcode 常用插件 加快开发速度 --严焕培
    iOS,蓝牙开发!!--By帮雷
    获取加速度数据,陀螺仪数据,磁场数据的两种方式-陈鹏
    简单仿京东"筛选"界面 双导航栏控制器共存 by Nicky.Tsui
    扩展NSDate类实现快捷使用 —— 昉
    如何实现视图圆角效果的三种方法及比较——董鑫
    无意进去UIView随笔闹腾着玩 -by 胡 xu
    简单实现UITableView索引功能(中英文首字母索引)(一) ByH罗
    动画推荐-By胡罗
    [手游项目3]-20-golang向上取整、向下取整和四舍五入
  • 原文地址:https://www.cnblogs.com/reblue520/p/7489078.html
Copyright © 2011-2022 走看看