카테고리 없음
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)