Я пытаюсь создать DataFrame в pandas, используя результаты очень простого запроса к ElasticSearch. Я получаю данные, которые мне нужны, но это вопрос обрезания результатов способом построения правильного фрейма данных. Я действительно забочусь только о том, чтобы получить метку времени и путь каждого результата. Я попробовал несколько разных шаблонов es.search.Создание DataFrame из результатов ElasticSearch
Код:
from datetime import datetime
from elasticsearch import Elasticsearch
from pandas import DataFrame, Series
import pandas as pd
import matplotlib.pyplot as plt
es = Elasticsearch(host="192.168.121.252")
res = es.search(index="_all", doc_type='logs', body={"query": {"match_all": {}}}, size=2, fields=('path','@timestamp'))
Это дает 4 порции данных. [u'hits ', u'_shards', u'took ', u'timed_out']. Мои результаты попадают в хиты.
res['hits']['hits']
Out[47]:
[{u'_id': u'a1XHMhdHQB2uV7oq6dUldg',
u'_index': u'logstash-2014.08.07',
u'_score': 1.0,
u'_type': u'logs',
u'fields': {u'@timestamp': u'2014-08-07T12:36:00.086Z',
u'path': u'app2.log'}},
{u'_id': u'TcBvro_1QMqF4ORC-XlAPQ',
u'_index': u'logstash-2014.08.07',
u'_score': 1.0,
u'_type': u'logs',
u'fields': {u'@timestamp': u'2014-08-07T12:36:00.200Z',
u'path': u'app1.log'}}]
Единственное, что меня волнует, - получить метку времени и путь для каждого удара.
res['hits']['hits'][0]['fields']
Out[48]:
{u'@timestamp': u'2014-08-07T12:36:00.086Z',
u'path': u'app1.log'}
Я не могу за жизнь мне понять, кто, чтобы получить этот результат, в dataframe в панд. Таким образом, для двух результатов, которые я вернул, я ожидал бы, например, dataframe.
timestamp path
0 2014-08-07T12:36:00.086Z app1.log
1 2014-08-07T12:36:00.200Z app2.log
Большое вам спасибо. Это сработало. Вы можете объяснить мне эту порцию. "pd.concat (map (pd.DataFrame.from_dict, Data), axis = 1 ['fields']. T" Я прошел маршрут повторения результатов 1 на 1 и создал кортеж для каждой отметки времени/пути , добавив это в список, а затем прочитав этот список кортежей с помощью from_record. Ваш путь был намного быстрее. –
Добро пожаловать. Я объяснил это на снимке экрана с помощью 4 шагов. –
Спасибо. Это имеет смысл сейчас. –