我是Python和elasticsearch的新手,已经挣扎了几天。
我在弹性上有一个可视化表的示例:
通过elastic的请求,我尝试在Python中获取数据:
from elasticsearch import Elasticsearch
es = Elasticsearch ("access_to_elastic", timeout=30)
res = es.search(index= "kibana_sample_data_flights", body=
{
"aggs": {
"2": {
"date_histogram": {
"field": "timestamp",
"calendar_interval": "1h",
"time_zone": "Asia/Bangkok",
"min_doc_count": 1
},
"aggs": {
"3": {
"terms": {
"field": "DestCountry",
"order": {
"_count": "desc"
},
"size": 10000
},
"aggs": {
"4": {
"terms": {
"field": "Carrier",
"order": {
"_count": "desc"
},
"size": 10000
},
"aggs": {
"5": {
"terms": {
"field": "DestCountry",
"order": {
"_count": "desc"
},
"size": 10000
},
"aggs": {
"6": {
"terms": {
"field": "FlightDelay",
"order": {
"_count": "desc"
},
"size": 100000
}
}
}
}
}
}
}
}
}
}
},
"size": 0,
"fields": [
{
"field": "timestamp",
"format": "date_time"
}],
"script_fields": {},
"stored_fields": ["*"],
"runtime_mappings": {
"hour_of_day": {
"type": "long",
"script": {
"source": "emit(doc['timestamp'].value.getHour());"
}
}},
"_source": {
"excludes": []
},
"query": {
"bool": {
"must": [],
"filter": [
{
"range": {
"timestamp": {
"format": "strict_date_optional_time",
"gte": "2022-07-26T05:59:12.406Z",
"lte": "2022-07-28T05:59:12.406Z"
}
}
}
],
"should": [],
"must_not": []
}
}
})
这些脚本的输出:
我的问题是,是否有任何方法或文档或其他任何东西可以使输出变得更具可读性JSON,csv或dataframe?
谢谢你
1条答案
按热度按时间6ljaweal1#
同样的斗争在这里,在最后以下工作对我来说:
使用Elasticsearch 8.5.3和Python库{elasticsearch==8.6.2,elastic-transport==8.4.0}。
ObjectApiResponse有一个成员属性“body”,它是一个dict。按照建议在ObjectApiResponse上调用to_dict()不起作用。