elasticsearch 关于http post请求url(Kibana 8.6.2)获得端点响应

cngwdvgl  于 2023-04-29  发布在  ElasticSearch
关注(0)|答案(1)|浏览(228)

之前我用的是Kibana版本7。10.2并用于通过inspect并进入network选项卡和http request-“es”获取http响应

curl "http://url:5601/kibana/internal/search/es"

并获取原始数据以在自动脚本中给予输入,然后将其转换为JSON字符串,最近将其升级到版本8。6.2,现在我得到的http请求是bsearch?compress=true

curl "http://url:5601/internal/bsearch?compress=true"

我发现这是压缩响应,以减少网络负载,它的响应是一些编码字符串,我不能转换为JSON字符串然而。是否有任何选项可以到达es端点?
早期HTTP请求

较新的http请求

升级后,我从request.post(url, headers=header, data=httpData, auth =('username','password'))中得到了一些编码字符串,我尝试将其解码为JSON字符串,但结果是一些未格式化的错误字符串。

eufgjt7s

eufgjt7s1#

似乎您用于从Elasticsearch检索数据的端点在升级到Kibana 8后发生了变化。6.2,并且现在压缩响应以减少网络负载。为了将压缩的响应转换为JSON字符串,可以使用Python中的gzip库。下面是一个示例代码片段,您可以使用它来检索数据并将压缩的响应转换为JSON字符串:

import requests
import gzip
import json

url = 'http://url:5601/internal/bsearch?compress=true'
headers = {
    'Content-Type': 'application/json',
    'kbn-xsrf': 'true',
    'Authorization': 'Basic <base64 encoded username:password>'
}

response = requests.post(url, headers=headers, data=your_data)

# decode the response using gzip
decoded_content = gzip.decompress(response.content)

# convert the decoded content to JSON string
json_string = json.loads(decoded_content)

确保将your_data替换为您希望在POST请求中发送的相应数据,并替换为以base64格式编码的实际用户名和密码。
希望这有帮助!

相关问题