我的5列数据中有3列是pandas to_datetime格式:
col1 col2 col3 col4 a
2017-01-01 21:07:57 2017-01-01 21:07:58 2017-01-01 21:07:59 misc_text_data text
2017-01-01 21:07:42 2017-01-01 21:07:48 2017-01-01 21:07:49 misc_test_data text2
2017-01-01 21:07:33 2017-01-01 21:07:22 2017-01-01 21:07:21 mist_test_fata fext3
如何通过elasticsearch.py字段将数据发送到elasticsearch?
我正在尝试使用elasticsearch将格式识别为时间戳,以便我可以从这些日期进行时间线分析。
我目前正在发送下面的数据而不承认时间:
mylist = []
for doc in df_json:
doc['tag'] = "mytags"
action = { "_index":"myindexoftimes", "_type": "mytimes", "_source":doc}
mylist.append(action)
helpers.bulk(es, mylist)
任何帮助都会有所帮助。谢谢。
答案 0 :(得分:2)
不确定代码中的问题是什么,可能与时间戳格式有关。
无论如何选择了iso格式的panda to_json对我有用:
import pandas as pd
from elasticsearch import Elasticsearch
import json
es = Elasticsearch()
data = ["2017-01-01 21:07:57, 2017-01-01 21:07:58, 2017-01-01 21:07:59, misc_text_data, text".split(','),
"2017-01-01 21:07:42, 2017-01-01 21:07:48, 2017-01-01 21 07:49, misc_test_data, text2".split(','),
"2017-01-01 21:07:33, 2017-01-01 21:07:22, 2017-01-01 21 07:21, misc_test_fata, fext3".split(',')]
df = pd.DataFrame(data,columns = ['col1','col2','col3','col4','a'])
for col in ['col1','col2','col3']:
df[col] = pd.to_datetime(df[col])
jsons = json.loads(df.to_json(orient='records',date_format='iso'))
for j in jsons:
j['injection_timestamp'] = pd.to_datetime('now')
es.index(index="test33", doc_type='time_text', body=j)