Elastic Search
Elasticsearch & python ( 복수데이터 취득 & 복수데이터 일괄등록 )
땅개발자
2021. 11. 10. 00:56
복수데이터 취득
Elasticsearch에서 최대 데이터 취득은 10000건이다.
100000건 이상의 데이터를 취득해서 처리를 위해서는 아래와 같은 처리를 해야한다.
result = get_es.search(index="{Index명}",
doc_type=doc_type,
body=query,
scroll='1m',
size=20)
scroll_id = result["_scroll_id"]
data_list = result["hits"]["hits"]
while(s_size > 0):
query = {
"scroll": "1m",
"scroll_id": scroll_id
}
result = get_es.scroll(body=query)
data_list = result["hits"]["hits"]
scroll_id = result["_scroll_id"]
s_size = len(result['hits']['hits'])
복수데이터 일괄등록
helpers.bulk를 사용한다.
from elasticsearch import Elasticsearch, helpers
def get_bulk_data_fromat(index_name: str, data_list: list) -> None:
for data in data_list:
yield {
"_op_type": "create",
"_index": index_name,
"_id": data.get("id"),
"_source": data
}
helpers.bulk(es, get_bulk_data_fromat(index_name, data_list), request_timeout=30)