32

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.

2
  • 1
    You should try using the exists API call to check if an index exists. Commented Oct 28, 2016 at 7:37
  • Tried it, can you look at my comment below to tcarmet's reply Commented Oct 28, 2016 at 10:51

2 Answers 2

74

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.

Sign up to request clarification or add additional context in comments.

Comments

0
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

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.