본문 바로가기

programmer/python

python to elasticsearch

파이선에서 elk로 연결하고 bulk update 하는 방법을 알아보자.

기본적으로 ES가 잘 접속 되는지 확인한다.

!pip install elasticsearch

from elasticsearch import Elasticsearch
from elasticsearch import helpers

es_client = Elasticsearch("https://localhost:9200/", verify_certs=False)
es_client.info()

데이터 null 처리와 날짜 형식 예외 처리 함수가 필요하다.

from elasticsearch import Elasticsearch
from elasticsearch import helpers
from datetime import datetime

def safe_date(date_value):
    return (
        pd.to_datetime(date_value) if not pd.isna(date_value)
            else  datetime(1970,1,1,0,0)
    )
df['ImportantDate'] = df['ImportantDate'].apply(safe_date)

def safe_value(field_val):
    return field_val if not pd.isna(field_val) else "Other"
df['Hold'] = df['PossiblyBlankField'].apply(safe_value)

df_iter = df.iterrows()
index, document = next(df_iter)

use_these_keys = ['id', 'FirstName', 'LastName', 'ImportantDate']
def filterKeys(document):
    return {key: document[key] for key in use_these_keys }
    
    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
helpers.bulk(es_client, doc_generator(your_dataframe))

 

<첨부 링크>

https://towardsdatascience.com/exporting-pandas-data-to-elasticsearch-724aa4dd8f62

https://doubly12f.tistory.com/46

https://blog.naver.com/PostView.nhn?isHttpsRedirect=true&blogId=wideeyed&logNo=221494109911

반응형
사업자 정보 표시
라울앤알바 | 장수호 | 서울특별시 관악구 봉천로 13나길 58-10, 404호(봉천동) | 사업자 등록번호 : 363-72-00290 | TEL : 010-5790-0933 | Mail : shjang@raulnalba.com | 통신판매신고번호 : 2020-서울관악-0892호 | 사이버몰의 이용약관 바로가기