• elasticsearch运维_分享两个自己整理的比较好用的elasticsearch脚本


    今天分享两个自己编写整理的比较好用的脚本,我平时也经常在elasticsearch生产环境使用。

    后面将会不定期给大家分享自己在生产运维中整理的好的脚本和命令给大家分享。

    1. #!/bin/bash
    2. # 定义 Elasticsearch 地址、端口、用户名和密码
    3. ES_HOST="192.168.xxx.xxx"
    4. ES_PORT="9200"
    5. ES_USER="elastic"
    6. ES_PASS="xxxxx"
    7. # 定义输出文件路径
    8. OUTPUT_FILE="/home/esuser/xxxx_indices_info.txt"
    9. # 临时文件存储
    10. TEMP_FILE="/tmp/xxxx_indices_info.txt"
    11. # 获取以 xxxx 开头的索引名称、大小并按索引名称排序,写入到临时文件
    12. curl -s -u ${ES_USER}:${ES_PASS} "${ES_HOST}:${ES_PORT}/_cat/indices?h=index,store.size&format=json" | jq -r '.[] | select(.index | startswith("xxxx")) | "\(.index)\t\(.["store.size"])"' > ${TEMP_FILE}
    13. # 检查临时文件是否生成
    14. if [ ! -s ${TEMP_FILE} ]; then
    15. echo "No data found or failed to retrieve data from Elasticsearch."
    16. exit 1
    17. fi
    18. # 清空输出文件
    19. > ${OUTPUT_FILE}
    20. # 处理大小单位转换并写入输出文件
    21. while IFS=$'\t' read -r index size; do
    22. # 检查大小是否为 null
    23. if [ "$size" == "null" ] || [ -z "$size" ]; then
    24. size_kb=0
    25. else
    26. # 将大小转换为 KB
    27. if [[ $size == *kb ]]; then
    28. size_kb=$(echo $size | sed 's/kb//')
    29. elif [[ $size == *mb ]]; then
    30. size_kb=$(echo $size | sed 's/mb//' | awk '{printf "%.0f", $1 * 1024}')
    31. elif [[ $size == *gb ]]; then
    32. size_kb=$(echo $size | sed 's/gb//' | awk '{printf "%.0f", $1 * 1024 * 1024}')
    33. elif [[ $size == *tb ]]; then
    34. size_kb=$(echo $size | sed 's/tb//' | awk '{printf "%.0f", $1 * 1024 * 1024 * 1024}')
    35. else
    36. size_kb=$size
    37. fi
    38. fi
    39. # 输出索引名称和大小(KB),追加到输出文件
    40. echo "${index} ${size_kb}" >> ${OUTPUT_FILE}
    41. done < ${TEMP_FILE}
    42. # 按索引名称排序并重定向到最终文件
    43. sort -k1,1 ${OUTPUT_FILE} -o ${OUTPUT_FILE}
    44. # 删除临时文件
    45. rm ${TEMP_FILE}
    46. ----
    47. 1) 定义 Elasticsearch 地址、端口、用户名和密码:将 ES_HOST、ES_PORT、ES_USER 和 ES_PASS 设置为你的 Elasticsearch 实例的地址、端口、用户名和密码。
    48. 2) 定义输出文件路径:将结果写入到 /home/esuser/xxxx_indices_info.txt 文件。
    49. 3) 获取以 xxxx 开头的索引信息:
    50. 4) 使用 curl 命令获取所有索引的信息,并以 JSON 格式返回。
    51. 5) 使用 jq 进行 JSON 解析并过滤出以 MIC 开头的索引,提取索引名称和大小。
    52. 6) 检查并处理大小字段:将大小单位(如 KB、MB、GB、TB)转换为 KB。如果大小为 null 或空,则设置为 0 KB。
    53. 输出结果:
    54. 1) 清空输出文件。
    55. 2) 使用 echo "${index} ${size_kb}" >> ${OUTPUT_FILE} 将每行结果追加到输出文件。
    56. 3) 按索引名称排序:使用 sort -k1,1 ${OUTPUT_FILE} -o ${OUTPUT_FILE} 按索引名称排序并重定向到最终文件。
    57. 4) 删除临时文件:清理临时文件。

    填充空索引加速各节点索引分片数量平衡

    1. #!/bin/bash
    2. # Elasticsearch节点的IP地址和端口
    3. ES_HOST="192.168.xxx.xxx:9200"
    4. # Elasticsearch超级用户的身份验证凭据
    5. USERNAME="elastic"
    6. PASSWORD="xxxx"
    7. # 索引名称的前缀和数量
    8. INDEX_PREFIX="test-null-index"
    9. INDEX_COUNT=10
    10. # 索引的设置
    11. INDEX_SETTINGS='{"settings": {"number_of_shards": 1, "number_of_replicas": 0}}'
    12. # 循环创建索引
    13. for ((i=1; ido
    14. INDEX_NAME="${INDEX_PREFIX}-${i}"
    15. echo "Creating index: $INDEX_NAME"
    16. curl -XPUT -u "$USERNAME:$PASSWORD" "http://$ES_HOST/$INDEX_NAME" -H 'Content-Type: application/json' -d "$INDEX_SETTINGS"

    上一篇你是学会了还是学废了:Elasticsearch 7 集群拷贝到其它环境如何重置密码

  • 相关阅读:
    Ajax零基础入门 Ajax零基础入门第一天
    技术实现 | Apache Doris Binlog 导入设计与实现
    基于微信小程序的宠物寄养平台小程序设计与实现(源码+lw+部署文档+讲解等)
    根据模板和git commit自动生成日·周·月·季报
    计算机毕业设计——基于html汽车商城网站页面设计与实现论文源码ppt(35页) HTML+CSS+JavaScript
    js颜色调试器
    小目标检测:基于切图检测的yolov5小目标检测
    websocket请求通过IteratorAggregate实现流式输出
    uniapp 微信小程序 uni-file-picker上传图片报错 chooseAndUploadFile
    TCP和UDP和端口
  • 原文地址:https://blog.csdn.net/shlei5580/article/details/139355894