我創建使用Python API類似這樣的Elasticsearch索引:索引創建成功TransportError(503,U「」)試圖用一個最近創建elasticsearch指數
from elasticsearch import Elasticsearch
es = Elasticsearch()
index_body = {"mappings": {".percolator": {"properties": {"message": {"type": "string", "analyzer": "english"}}}}}
# Creates the index if it doesn't exist
if not es.indices.exists('test'):
es.indices.create(index='test', body=index_body)
print es.exists(index='test', id='1')
,但是當我檢查該指數中的文檔存在失敗與此錯誤:
Traceback (most recent call last):
File "main.py", line 12, in <module>
print es.exists(index='test', id='1')
File "/usr/local/lib/python2.7/dist-packages/elasticsearch/client/utils.py", line 68, in _wrapped
return func(*args, params=params, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/elasticsearch/client/__init__.py", line 282, in exists
self.transport.perform_request('HEAD', _make_path(index, doc_type, id), params=params)
File "/usr/local/lib/python2.7/dist-packages/elasticsearch/transport.py", line 307, in perform_request
status, headers, data = connection.perform_request(method, url, params, body, ignore=ignore, timeout=timeout)
File "/usr/local/lib/python2.7/dist-packages/elasticsearch/connection/http_urllib3.py", line 86, in perform_request
self._raise_error(response.status, raw_data)
File "/usr/local/lib/python2.7/dist-packages/elasticsearch/connection/base.py", line 102, in _raise_error
raise HTTP_EXCEPTIONS.get(status_code, TransportError)(status_code, error_message, additional_info)
elasticsearch.exceptions.TransportError: TransportError(503, u'')
如果我運行此腳本第二次,指數已經創建它工作得很好。 有沒有人有什麼可能會出錯的想法?
請看你的'/ var/log/elasticsearch/.log',它可以包含更多的信息。 '503'通常以某種方式表示集羣存在問題。當您已經發送下一個請求時,可能索引尚未創建(在集羣中)?如果您在嘗試使用'es.exists'之前等待一秒鐘,它會起作用嗎? –
mark
感謝您的回答!如果我在'es.exists(index ='test',id ='1')之前添加'time.sleep(1)',它可以很好地工作。儘管在日誌文件中沒有信息。 –