原创TypeError: __init__() missing 1 required positional argument: 'scheme'

今天我想用python连接elasticsearch ,报错代码如下:

from elasticsearch import Elasticsearch
es=Elasticsearch([{"host":"172.16.11.111","port":9200}])
print(es.ping)

错误提示

Traceback (most recent call last):
  File "C:\python\搜索聚合\search.py", line 4, in <module>
    es = Elasticsearch([{'host': 'localhost', 'port': 3306}])
  File "C:\python\lib\site-packages\elasticsearch\_sync\client\__init__.py", line 347, in __init__
    ssl_show_warn=ssl_show_warn,
  File "C:\python\lib\site-packages\elasticsearch\_sync\client\utils.py", line 108, in client_node_configs
    node_configs = hosts_to_node_configs(hosts)
  File "C:\python\lib\site-packages\elasticsearch\_sync\client\utils.py", line 157, in hosts_to_node_configs
    node_configs.append(host_mapping_to_node_config(host))
  File "C:\python\lib\site-packages\elasticsearch\_sync\client\utils.py", line 224, in host_mapping_to_node_config
    return NodeConfig(**options)  # type: ignore
TypeError: __init__() missing 1 required positional argument: 'scheme'

报错原因:
查了网上的 python 操作 es 的入门教程,都没有提到 scheme 这个参数。最后一想,可能是版本问题,我使用的这个 python 中的 es 库版本为 8.3.3,本地的 es 服务器版本为 5点几。可能是 python 中 es 版本太高的原因。小伙伴按下面命令安装相对应的es模块版本即可!!!
解决方法

把 python 的 es 库版本降到 5.1.0,结果就可以正常运行了:

  1. 先卸载当前版本的elasticsearch模块:

    pip uninstall elasticsearch
    

    Y表示确定卸载:

  2. 安装指定版本的elasticsearch模块(小伙伴们按照自己服务器版本安装相近版本即可):

    pip install elasticsearch==5.5.3
    
  3. 安装成功后再次运行代码成功:

本文链接:https://my.lmcjl.com/post/10656.html

展开阅读全文

4 评论

留下您的评论.