You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

运行Elasticsearch Python客户端代码时遇ValueError问题求助

解决Elasticsearch Python客户端初始化报错:Either 'hosts' or 'cloud_id' must be specified

问题场景

运行以下Python代码时触发ValueError:

from elasticsearch import Elasticsearch, helpers 

es = Elasticsearch()

错误信息

ValueError                                Traceback (most recent call last)
Input In [15], in <cell line: 6>()
      1 #Import Elascticsearch and helpers from  elasticsearch
      3 from elasticsearch import Elasticsearch, helpers 
----> 6 es = Elasticsearch()

File /opt/homebrew/anaconda3/lib/python3.9/site-packages/elasticsearch/_sync/client/__init__.py:191, in Elasticsearch.__init__(self, hosts, cloud_id, api_key, basic_auth, bearer_auth, opaque_id, headers, connections_per_node, http_compress, verify_certs, ca_certs, client_cert, client_key, ssl_assert_hostname, ssl_assert_fingerprint, ssl_version, ssl_context, ssl_show_warn, transport_class, request_timeout, node_class, node_pool_class, randomize_nodes_in_pool, node_selector_class, dead_node_backoff_factor, max_dead_node_backoff, serializer, serializers, default_mimetype, max_retries, retry_on_status, retry_on_timeout, sniff_on_start, sniff_before_requests, sniff_on_node_failure, sniff_timeout, min_delay_between_sniffing, sniffed_node_callback, meta_header, timeout, randomize_hosts, host_info_callback, sniffer_timeout, sniff_on_connection_fail, http_auth, maxsize, _transport)
    128 def __init__(
    129     self,
    130     hosts: t.Optional[_TYPE_HOSTS] = None,
   (...)
    188     _transport: t.Optional[Transport] = None,
    189 ) -> None:
    190     if hosts is None and cloud_id is None and _transport is None:
--> 191         raise ValueError("Either 'hosts' or 'cloud_id' must be specified")
    193     if timeout is not DEFAULT:
    194         if request_timeout is not DEFAULT:

ValueError: Either 'hosts' or 'cloud_id' must be specified

已知Elasticsearch服务器已正常运行,需修复脚本执行问题。

解决方案

1. 连接本地默认端口的Elasticsearch

本地Elasticsearch默认监听9200端口,显式指定host地址即可:

from elasticsearch import Elasticsearch, helpers 

# 指定本地ES的访问地址
es = Elasticsearch("http://localhost:9200")

2. 带身份验证的本地连接

如果你的Elasticsearch开启了账号密码验证,添加basic_auth参数:

from elasticsearch import Elasticsearch, helpers 

es = Elasticsearch(
    "http://localhost:9200",
    basic_auth=("your_username", "your_password")
)

3. 连接Elastic Cloud服务

若使用Elastic Cloud托管服务,使用cloud_id和api_key初始化客户端:

from elasticsearch import Elasticsearch, helpers 

es = Elasticsearch(
    cloud_id="your_cloud_identifier",
    api_key="your_api_key"
)

原因说明

Elasticsearch Python客户端8.x及以上版本移除了默认连接地址(原默认localhost:9200),要求必须显式传入hosts(自托管实例地址)或cloud_id(云服务标识符)参数,才能完成客户端初始化。

内容的提问来源于stack exchange,提问作者Shoaib Mohd

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 13:35:44