Elasticsearch Python对CSV或JSON的响应

sigwle7e  于 2023-03-27  发布在  ElasticSearch
关注(0)|答案(1)|浏览(117)

我是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?

谢谢你

6ljaweal

6ljaweal1#

同样的斗争在这里,在最后以下工作对我来说:

print(json.dumps(res.body, indent=2))

使用Elasticsearch 8.5.3和Python库{elasticsearch==8.6.2,elastic-transport==8.4.0}。
ObjectApiResponse有一个成员属性“body”,它是一个dict。按照建议在ObjectApiResponse上调用to_dict()不起作用。

相关问题