Elastic Cloud 인덱스에 CSV 데이터 문서를 추가하는 방법

기본적으로색인 API 문서를바탕으로만들었지만엘라스틱씨는재료만준비했고샘플레시피라든지등을게재하지 않아힘들었습니다.
색인 작성 자체는 일astic Cloud의 키바나에서 CSV 파일을 올리면 되지만, 기존 색인에 CSV 데이터를 추가하려면 DevTools가 파일 참조를 할 수 없고 JSON에서만 추가할 수 있다.
이번에는 이쪽에서 보도된 로드입니다.csv.아주 참고했py.해놓은 host는 현지의 es가 아니라 구름이 된 es야.
https://kazuhira-r.hatenablog.com/entry/2020/01/01/012853

원본 CSV 파일


아래와 같이 첫 번째 줄에 제목이 있고 쉼표로 구분되며date형식은yyy-MM-dd(date형식이 일반이라면 elastic측에서 식별할 수 있을 것 같다).본문에 ,"\n\s 등의 내용이 없음을 주의해라.
sample.csv
title,author,created_date,body,url,description,author_image_url
今日の出来事,たくや,2021-10-10,今日はほげほげで..,https://example.com/aaa,たくやの日記です。日々のうんたら..,https://img.example.com/tky

이루어지다


차리다


우선 임의의 디렉터리와 파일을 만들고 pip로elasticsearch에 넣습니다.
mkdir es_uploader
cd es_uploader
touch load_csv.py
pip3 install elasticsearch
이것의esuploader 디렉토리에 업로드될 것으로 예상되는 CSV 파일을 이동하거나 복사합니다.

코드


그다음에 로드.csv.py에서 다음과 같은 내용을 기술하고 자신의 환경으로 변경합니다
load_csv.py
from elasticsearch import Elasticsearch
from elasticsearch import helpers
from csv import DictReader

csv_file = "sample.csv" # ここが~/や../のようにパス形式だと上手くいかなかった
index_name = "my-index"

es = Elasticsearch([f"https://username:[email protected]:9243"])


### simple
with open(csv_file, "rt", encoding = "utf-8") as file:
    reader = DictReader(file)

    for row in reader:
        doc = row
        print('adding..: ', doc)
        es.index(index=index_name, body=doc)
        
es.close()
endpoint는 Elastic Cloud의 Deployment 화면에서 복제할 수 있다username:password@는 보충 형식이다.

아래의 작법도 괜찮을 것 같다.
es = Elasticsearch(
    "https://username:[email protected]:9243",
    http_auth=("username", "password")
)
마지막은 에스.close () 를 쓰지 않으면 실례가 저장될 때 좋지 않습니다인 것 같은데 명확하게 추가했어요.

실행


실행하면 색인이 추가됩니다.
python3 load_csv.py

잡담


create 방법을 사용할 때 id가 필요하지만 index 방법은 id가 지정되지 않은 경우elastic 측에서 자동으로 번호를 매깁니다.또 중복을 피하려면 id로만 판단할 수 있고, 웹 검색엔진의 인덱스에서는 URL이나 URL로 판단할 수 있다.'와/'를'-'로 바꿔야 할지 논의 중이다.

참고 문장


https://github.com/elastic/elasticsearch-py
https://qiita.com/satto_sann/items/8a63761bbfd6542bb9a2
https://github.com/elastic/elasticsearch-py/issues/516
https://stackoverflow.com/questions/33573692/avoid-duplicate-documents-in-elasticsearch

좋은 웹페이지 즐겨찾기