This seems to be a pretty common question. And the most common answer is to use the Python ElasticSearch client and the get_alias() method like this:
import Elasticsearch
es = elasticsearch.Elasticsearch(hosts=[ES_HOST], )
idx_list = [x for x in es.indices.get_alias("*").keys() ]
This is the most common answer one can see in StackOverflow. But ElasticSearch offers us the cat API which is better suited for such a query. So a better way to approach this can be:
import Elasticsearch
es = elasticsearch.Elasticsearch(hosts=[ES_HOST], )
idx_list = es.cat.indices(index='foobar-20*', h='index', s='index:desc').split()
The above example asks an even more elaborate query: Of all the indices, return to us those who match the pattern foobar-20*
, return only the index name from the fields that the cat API returns, and by the way, sort the returned index names in descending order.
If the database offers us a way to do things, it is best that we ask it to.