카테고리 없음

Elasticsearch 데이터 업데이트 시키기

3pie 2024. 10. 10. 16:04
from elasticsearch import Elasticsearch, helpers
# 아이디, 비번 설정했을경우 verify_certs또한 False로 해줘야함  
es = Elasticsearch('https://~~', basic_auth=('id', 'pwd'), verify_certs=False)

index_name = 'test_test'
es.indices.create(index=index_name)

# 예시데이터

data = [
{"meta" : {"file_name" : "1.pptx", "test_col" : "hu1"}},
{"meta" : {"file_name" : "2.ppt", "test_col" : "hu2"}},
{"meta" : {"file_name" : "3.pptx", "test_col" : "hu3"}},
{"meta" : {"file_name" : "4.text", "test_col" : "hu4"}},
{"meta" : {"file_name" : "5.xlsx", "test_col" : "hu5"}},
]
# 인덱스 존재여부 확인
print(es.indices.exists(index=index_name))
# 전체인덱스 리스트 확인하기
index_list = es.cat.indices(format='json')

# 예시 데이터 삽입
actions = [
{"_index" : index_name, "_source": item} for item in data
]
# 삽입실행
helpers.bulk(es, actions)

# 데이터 확인

query = {
	"query" : {
    		"match_all" : {}
            }
}

searching = es.search(index=index_name, body=query)

# 검색조건 쿼리

query = {
	"wildcard" : {
    		"meta.file_name" : "*.ppt*"
            }
}

res =  es.search(index=index_name, body=query)

#업데이트할 문서 리스트

for hit in rse["hits"]["hits"] : 
	doc_id = hit["_id"]
    update_actions.append({
    	"_op_type" : "update",
        "_index" : index_name,
        "_id" : doc_id,
        "doc" : {
        	"meta" : {
            	"file_name" : "test.pptx"}
        }
})

#일괄 업데이트 실행
helpers.bulk(es, update_actions)

# 데이터 확인
query = {
	"wildcard" : {
    		"meta.file_name" : "*.ppt*"
            }
}

res =  es.search(index=index_name, body=query)