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

Kibana从7.10.2升级到8.6.2后如何获取ES端点JSON响应?

解决Kibana 8.6.2获取JSON格式搜索响应的方法

方法1:禁用请求压缩

Kibana 8.x的bsearch接口默认返回gzip压缩内容,你可以通过请求头告知服务器不要压缩,直接拿到JSON:

  • curl命令示例:
curl --header "Accept-Encoding: identity" "http://url:5601/internal/bsearch?compress=true" -u username:password
  • Python requests请求修改:
import requests

url = "http://url:5601/internal/bsearch?compress=true"
headers = {
    # 保留原有请求头(如kbn-xsrf),添加以下字段
    'Accept-Encoding': 'identity'
}
response = requests.post(url, headers=headers, data=httpData, auth=('username','password'))
json_data = response.json()

方法2:手动解码压缩响应

如果不想修改请求头,可对返回的压缩内容手动解码:

  • curl搭配gzip解码:
curl "http://url:5601/internal/bsearch?compress=true" -u username:password | gzip -d
  • Python手动处理解码:
import requests
import gzip
from io import BytesIO
import json

response = requests.post(url, headers=header, data=httpData, auth=('username','password'), stream=True)
if response.headers.get('Content-Encoding') == 'gzip':
    buffer = BytesIO(response.content)
    with gzip.GzipFile(fileobj=buffer) as f:
        json_str = f.read().decode('utf-8')
        json_data = json.loads(json_str)

方法3:直接调用Elasticsearch原生API

跳过Kibana,直接访问ES的搜索接口获取数据,这是最直接的方式:

  • curl命令示例(需ES访问权限):
curl "http://es-url:9200/目标索引名/_search" -u es账号:es密码 -H "Content-Type: application/json" -d '{"query": {"match_all": {}}}'
  • Python使用ES客户端库:
from elasticsearch import Elasticsearch

es = Elasticsearch("http://es-url:9200", basic_auth=('es账号', 'es密码'))
response = es.search(index="目标索引名", query={"match_all": {}})
json_data = response.body

注意:直接访问ES需确保账号有对应索引的查询权限,且网络能连通ES服务端口。

内容的提问来源于stack exchange,提问作者Sirish Manandhar

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 13:03:08