我正在使用ElasticSearch数据库来存储我从网上获取的数据。但是,当我尝试为数据库中的数据编制索引时,我收到一个错误
以下是我创建和索引数据的代码:
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]')
“缺少身份验证令牌”意味着您需要先进行身份验证,然后才能与此Elasticsearch实例通信。要索引文档,用户必须具有写访问权限。您可以在如下URL中包含用户名和密码:http://user:password@hostname:port
例如,在shell中:
然后在python中:
创建ElasticSearch客户端时,可以将HTTP basic auth传递给
http_auth
参数:这假设您使用的是具有} 传输类
http_auth
参数的底层^{有关身份验证的SSL和其他参数,请参阅文档的SSL and Authentication部分:
此外,如果您使用Postman工具执行此操作,例如:
转到“授权”选项卡“基本授权”,在此处写入通过单击elasticsearch-setup-passwords.bat收到的用户名和密码
相关问题 更多 >
编程相关推荐