Elasticsearch

[Python] Insert bulk from pandas dataframe to elasticsearch

Pydole 2020. 2. 15. 22:40

 

Python을 이용하여 Elasticsearch로 Bulk insert

 

import pandas as pd
from elasticsearch import Elasticsearch
from elasticsearch.helpers import bulk

# Datetime, String, Interger Example Dataframe 

listDate = ['2020-01-01 00:00:00','2020-01-01 00:01:00','2020-01-01 00:02:00', '2020-01-01 00:03:00']
listStrings = ['a','b','c','d']
listInterger = [1, 2, 3, 4 ]

df = pd.DataFrame([ x for x in zip(listDate,listStrings,listInterger)], columns=['date','string', 'interger'])
df['date'] = pd.to_datetime(df['date'])



# dataframe to elasticsearch

es = Elasticsearch(host='host', port=' ')
es.indices.create(index='bulk_test',body={})

df = pd.DataFrame(data = {'date' : df['date'],
                          'strings': df['string'],
                          'interger' : df['interger']})
 
documents = df.to_dict(orient='records')
bulk(es, documents, index='bulk_test',doc_type='foo', raise_on_error=True)