Reputation: 1029
How do I check whether an index exists or not using a python query?
I'm passing my index as a variable assigned outside the query as :-
i=int(datetime.datetime.now().strftime('%d'))+1
indextring="index"
for m in range (i-10,i):
d = datetime.datetime(2016, 10, m, 18, 00).strftime('%Y-%m-%d')
index1=datestring+d
subfix="_"+datetime.datetime(2016, 10, m, 18, 00).strftime('%Y-%m-%d')
es=Elasticsearch(['localhost:9200'])
res = **es.search(index='{0}'.format(index1)**, doc_type="log",size=10000, from_=0, body={ "query": {
"match": {
....Match condition follows
}
}
}})
Now, some of the index are not present for a particular date, however I want the process to run irrespective of that. I'm getting the following error when the index is not present-->
elasticsearch.exceptions.NotFoundError: TransportError(404, u'index_not_found_exception')
I'm not sure how the exception handling works in elasticsearch.
Upvotes: 32
Views: 44080
Reputation: 137
for i in index_list:
if es.indices.exists(index=i):
print("ok",i)
else:
print(i)
to ckeck a list of indexes if they are available or not
Upvotes: 0
Reputation: 12672
You have to call it on indices. Currently you are using exists of search class which tells you whether given document exists in the index and not the index itself.
Try this code
if es.indices.exists(index="index"):
Your code for search
There are also more options if you want to use.
Upvotes: 74