2017-07-14 926 views
1

我正在使用elasticsearch数据库来存储我从在线提取的数据,但是当我尝试索引数据库中的数据时收到错误。Elasticsearch缺少REST请求的身份验证令牌

这里是我的创建和索引数据代码:

es = Elasticsearch() 

es.index(index='weather', doc_type='data', body=doc) 

然而,当我运行这个程序,这些行的第二个导致错误,下面是完整的回溯:

Traceback (most recent call last): 
File "weatherScraper.py", line 79, in <module> 
    main() 
File "weatherScraper.py", line 73, in main 
    es.index(index='weather', doc_type='data', body=doc) 
File "/home/alec/.local/lib/python2.7/site-packages/elasticsearch/client/utils.py", line 73, in _wrapped 
    return func(*args, params=params, **kwargs) 
File "/home/alec/.local/lib/python2.7/site-packages/elasticsearch/client/__init__.py", line 298, in index 
    _make_path(index, doc_type, id), params=params, body=body) 
File "/home/alec/.local/lib/python2.7/site-packages/elasticsearch/transport.py", line 312, in perform_request 
    status, headers, data = connection.perform_request(method, url, params, body, ignore=ignore, timeout=timeout) 
File "/home/alec/.local/lib/python2.7/site-packages/elasticsearch/connection/http_urllib3.py", line 128, in perform_request 
    self._raise_error(response.status, raw_data) 
File "/home/alec/.local/lib/python2.7/site-packages/elasticsearch/connection/base.py", line 125, in _raise_error 
    raise HTTP_EXCEPTIONS.get(status_code, TransportError)(status_code, error_message, additional_info) 
elasticsearch.exceptions.AuthenticationException: TransportError(401, u'security_exception', u'missing authentication token for REST request [/weather/data]') 

回答

3

“缺少认证令牌”表示在与此Elasticsearch实例交谈之前需要进行认证。要索引文档,用户必须具有写入权限。您可以在以下网址用户名和密码:http://user:[email protected]:post

例如,在一个shell:

export ES_ENDPOINT="http://usernameWithWriteAccess:[email protected]:9200" 

然后在python:

es = Elasticsearch(os.environ['ES_ENDPOINT'])