2017-01-30 4 views
0

Я использую следующий код, чтобы получить данные из упругого поиска, и я не в состоянии отформатировать его в соответствии с моим требованиемформат данных питона elasticsearch

from datetime import datetime 
from elasticsearch import Elasticsearch 
import json 

es = Elasticsearch(hosts=[{'host': "localhost", 'port': "9200"}]) 

res = es.search(index="myindice",size=2, body={"query": {"match_all":{}}}) 
for hit in res['hits']['hits']: 
    v = hit["_source"] 
    q = json.dumps({'name': v['name'],'timestamp': v['@timestamp']}) 
    print(q) 

И выход

{"timestamp": "2016-09-22T00:28:44.000Z", "name": "1456772324.47092"} 
{"timestamp": "2016-09-22T00:32:16.000Z", "name": "1456772536.57587"} 
{"timestamp": "2016-09-22T00:39:19.000Z", "name": "1456772836.57587"} 

Но я хотите, чтобы выход был следующим:

{"mydata":[{"timestamp": "2016-09-22T00:28:44.000Z", "name":"1456772324.47092"}, 
{"timestamp": "2016-09-22T00:32:16.000Z", "name": "1456772536.57587"}, 
{"timestamp": "2016-09-22T00:39:19.000Z", "name": "1456772836.57587"}]} 

Не могли бы вы помочь мне в том, как я могу это достичь.

ответ

1

Как насчет этого?

mydata = [] 
for hit in res['hits']['hits']: 
    v = hit["_source"] 
    mydata.append({'name': v['name'],'timestamp': v['@timestamp']}) 
result = {"mydata": mydata} 
q = json.dumps(result) 
print(q) 
+1

Ossom works amazing – Dython