Skip to content

Instantly share code, notes, and snippets.

@colonD
Created January 4, 2012 18:00
Show Gist options
  • Star 11 You must be signed in to star a gist
  • Fork 4 You must be signed in to fork a gist
  • Save colonD/1561224 to your computer and use it in GitHub Desktop.
Save colonD/1561224 to your computer and use it in GitHub Desktop.
Quick cron.daily script for stock Logstash/ES installation
#!/bin/sh
# Do elasticsearch optimize on logstash previous day index
# if $1 = all then optimize all indicies
esindex="/opt/elasticsearch/data/elasticsearch/nodes/0/indices"
# Grab yesterday's values
D=`date +%d -d yesterday`
M=`date +%m -d yesterday`
Y=`date +%Y -d yesterday`
today="`date +%Y`.`date +%m`.`date +%d`"
yesterday="$Y.$M.$D"
# If $1 = all
if [ "x$1" = "xall" ]
then
# Loop through all ES indicies except today
for index in `ls $esindex | grep -v "$today"`
do
# Run through all the indicies and optimize them
echo "Optimizing $index"
curl -XPOST "http://localhost:9200/$index/_optimize?max_num_segments=2"
done
else
echo "Optimizing index logstash-$yesterday"
curl -XPOST "http://localhost:9200/logstash-$yesterday/_optimize?max_num_segments=2"
fi
@imperialwicket
Copy link

Great script! I doubt there's noticeable overhead here, but it seems like your dates could be a little lighter:

today=`date +%Y.%m.%d`
yesterday=`date -d yesterday +%Y.%m.%d`

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment