Created
February 3, 2021 11:56
-
-
Save h1k3r/5fd14f5c0d7911e8c27b4f975c1e1806 to your computer and use it in GitHub Desktop.
elastic_search_delete_empty_indexes.sh
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
# Based on https://discuss.elastic.co/t/finding-and-deleting-empty-indexes/172764 | |
# Usage: | |
# elastic_search_delete_empty_indexes.sh servername:9200 #for dry run | |
# elastic_search_delete_empty_indexes.sh servername:9200 delete #to really delete | |
srv="" | |
delete=false | |
# Parameters check | |
if [ -z "$1" ] | |
then | |
echo "Pass server name and port as a first parameter." | |
exit | |
else | |
srv="$1" | |
fi | |
if [ "$2" == "delete" ]; then | |
echo "Deleting indexes." | |
delete=true | |
else | |
echo "Dry run. Pass delete as second parameter to delete for real." | |
fi | |
echo "Cleaning elastic $srv" | |
for idx in $(curl -XGET "http://$srv/_all/_settings" -s | jq 'keys' | sed 's/["|,]//g' | grep -E '[[:alpha:]]+'); do | |
count=$(curl -X GET "http://$srv/$idx/_count" -s | jq '.count') | |
if (( $count == 0 )); then | |
echo "$(tput setaf 2)** Index $idx is empty ... delete it$(tput setaf 7)" | |
if [ "$delete" == true ]; then | |
curl -XDELETE "http://$srv/$idx" | |
echo "" | |
fi | |
else | |
echo "$(tput setaf 1)Count $idx -> $count$(tput setaf 7)" | |
fi | |
done |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment