This post is older than a year. Consider some information might not be accurate anymore.
If you working with logstash and set the index name dynamically from variables, you might run into situations where the variable is not substituted due to errors. You can get rid of this bad indices by deleting them with the REST API of elasticsearch. The challenge lies in escaping the special characters.
An example what might happen:
curl -s http://localhost:9200/_cat/indices
green open .marvel-es-2016.03.16 1 1 750253 5159 717.1mb 358.5mb
green open fo-%{environment}-2016.03.19 5 1 186 0 346kb 173kb
green open .marvel-es-2016.03.17 1 1 772223 5592 726.5mb 367mb
green open .marvel-es-2016.03.18 1 1 753400 3932 777mb 388.4mb
To delete the second index we have to escape
- % → %25
- { → %7B
- } → %7D
curl -XDELETE http://localhost:9200/fo-%25%7Benvironment%7D-2016.03.19