【问题标题】:Elasticsearch Connection弹性搜索连接
【发布时间】:2021-05-23 17:08:41
【问题描述】:

我正在使用 蟒蛇:2.7.16 Elasticsearch:6.8.12 启用 TLS

我在我的服务器/主机上获得输出 如果我跑 curl --insecure $CREDS -X GET "localhost:9210/metricbeat*/_search" | python -m json.tool

如果我在我的 python 脚本中使用以下代码:

从弹性搜索导入弹性搜索,RequestsHttpConnection

url = Elasticsearch(['https://' + options.controller + ':9210/metricbeat*/_search'], verify_certs=False, connection_class=RequestsHttpConnection)

错误: 收集系统信息... /Users/Library/Python/2.7/lib/python/site-packages/elasticsearch/connection/http_requests.py:141:UserWarning:使用带有 verify_certs=False 的 SSL 连接到 https://x.x.x.x:9210 是不安全的。 % self.host 等待查询结果... 错误:查询弹性搜索数据失败:未找到 u""

[option.controller 是我的服务器/主机]

任何帮助将不胜感激,谢谢。

【问题讨论】:

    标签: python elasticsearch ssl ssl-certificate kibana


    【解决方案1】:

    您的网址中的某些内容似乎有误,它无法识别发送请求。在发送之前尝试打印您请求的确切网址,也许您可​​以在那里检测到错误。

    【讨论】:

    • 看起来您尝试使用错误的 API。您的 URL 应该与您的 curl 请求具有相同的路径,结果对象应该有一个 search() 方法来进行搜索,并且您将参数传递给该方法来进行搜索。
    • 如果我运行 curl --insecure $CREDS -X GET "localhost:9210/metricbeat*/_search" | 我会得到输出python -m json.tool 但没有通过我的python脚本中的url
    • 因此,当您使用 Elasticsearch() 方法构造 ElasticSearch 对象时。您只需要提供基本 url 信息。不要包含路径 /metricbeat*/_search 然后使用正确的参数调用方法 search() 进行搜索并返回结果。
    【解决方案2】:

    您想要更多类似以下的内容:

    from elasticsearch import Elasticsearch, RequestsHttpConnection
    
    es = Elasticsearch(hosts=['https://' + options.controller + ':9210'],
                       verify_certs=False, 
                       connection_class=RequestsHttpConnection)
    result = elastic_client.search(index="metricbeat*", body={"query": {"match_all": {}}})
    

    【讨论】:

      猜你喜欢
      • 2018-11-28
      • 1970-01-01
      • 2021-07-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多