我尝试以下代码:
def connect ():
es = None
es = Elasticsearch([{'host': 'localhost', 'port': 9200}])
print(es.ping())
字符串
我得到以下错误:
/Users/USER/PycharmProjects/practical_week4_ex_1/venv/bin/python /Users/USER/PycharmProjects/practical_week4_ex_1/scratch.py
Traceback (most recent call last):
File "/Users/USER/PycharmProjects/practical_week4_ex_1/scratch.py", line 7, in <module>
es = Elasticsearch([{'host': 'localhost', 'port': 9200}])
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/USER/PycharmProjects/practical_week4_ex_1/venv/lib/python3.11/site-packages/elasticsearch/_sync/client/__init__.py", line 333, in __init__
node_configs = client_node_configs(
^^^^^^^^^^^^^^^^^^^^
File "/Users/USER/PycharmProjects/practical_week4_ex_1/venv/lib/python3.11/site-packages/elasticsearch/_sync/client/utils.py", line 105, in client_node_configs
node_configs = hosts_to_node_configs(hosts)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/USER/PycharmProjects/practical_week4_ex_1/venv/lib/python3.11/site-packages/elasticsearch/_sync/client/utils.py", line 154, in hosts_to_node_configs
node_configs.append(host_mapping_to_node_config(host))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/USER/PycharmProjects/practical_week4_ex_1/venv/lib/python3.11/site-packages/elasticsearch/_sync/client/utils.py", line 221, in host_mapping_to_node_config
return NodeConfig(**options) # type: ignore
^^^^^^^^^^^^^^^^^^^^^
TypeError: NodeConfig.__init__() missing 1 required positional argument: 'scheme'
Process finished with exit code 1
型
某种形式的响应,没有错误
1条答案
按热度按时间ldxq2e6h1#
看起来你正在使用相对较新版本的python客户端。是8.x吗?如果是这种情况,你会丢失一个
scheme
参数,该参数应该是'http'或'https',具体取决于你安装elasticsearch的方式。所以,如果你在本地安装时禁用了ssl和身份验证,它应该是这样的。字符串
但是,如果您进行了默认安装。您可能正在使用自生成的SSL密钥和一些自动生成的凭据。因此,您需要禁用SSL身份验证并抑制警告,这在真实的安装中并不推荐,但对于您的本地测试应该是可以的:
型
正确的解决方案应该是将您的客户端指向生成的CA证书:
型