파이선에서 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호 | 사이버몰의 이용약관 바로가기
'programmer > python' 카테고리의 다른 글
python 현재 폴더 모두 압축하기 (0) | 2022.05.19 |
---|---|
[conda] jupyterlab - git extension 설치 방법 (0) | 2022.04.10 |
[Crawling] webdriver로 새로운 탭 열고 데이터 수집하기 (0) | 2022.02.23 |
Python DateTime 변환(날짜 양식 변환) (1) | 2022.02.22 |
[docker] jupyter-notebook 설치 (0) | 2022.02.01 |