DataFrame의 결과를 Elasticsearch의 Index로 넣어야 했다.
물론? python에서도 elasticsearch의 패키지가 있다.
아래와 같이 es_client
를 정의 할때, 내가 넣고자 하는 ES_HOST
를 파라미터로 넘겨주면 된다.
예: Elasticsearch('localhost:9200')
use_these_keys
에는 dataframe의 여러 컬럼중에서 내가 es에 넣을 필드의 리스트를 넣어 주면 된다.
아래 helpers.bulk
를 이용하여 doc_generator
에 정의한 index
, type
, _id
, _source
의 형태로 값이 들어간다.
from elasticsearch import Elasticsearch
from elasticsearch import helpers
es_client = Elasticsearch(http_compress=True)
def doc_generator(df):
df_iter = df.iterrows()
for index, document in df_iter:
yield {
"_index": 'your_index',
"_type": "_doc",
"_id" : f"{document['id']}",
"_source": filterKeys(document),
}
raise StopIteration
use_these_keys = ['id', 'value', 'value1']
def filterKeys(document):
return {key: document[key] for key in use_these_keys }
helpers.bulk(es_client, doc_generator(your_dataframe))