반응형
JSON으로 된 데이터를 ElasticSearch에 그냥 Put 해버리면 알아서 Mapping을 해주기 때문에 매우 좋지만
JSON으로 된 데이터에 모든 데이터들이 따옴표(" ")로 묶여있어 전부 `text`로 맵핑을 해버리는 경우가 있다.
이 문제를 조금이나마 해결하기 위해 프로그램을 만들었다.
수많은 웹사이트를 뒤졌지만 중첩 딕셔너리를 해결하지 못하여 몇 주를 삽질 하다가 ChatGPT를 잘 굴리다 보니(가르치다 보니) 드디어 중첩 딕셔너리에 대한 문제를 해결할 수 있었다.
사용목적
해당 프로그램은 이러한 문제를 겪고 있으신 분이 사용하면 유용할 것이에요.
1. ElasticSearch에 데이터를 맵핑해야 하는데 데이터가 너무 많다
2. 데이터가 모두 따옴표로 묶여있어 전부 `text`로 맵핑하여 수작업을 해야한다.
주의
- 도움을 주는 프로그램일 뿐 ElasticSearchMapping 작업에 있어 "전부"가 아님
- 이로 인한 문제는 책임지지 않음
- 중첩된 JSON데이터 같은 경우는 검수가 반드시 필요함
단순 로직
- 데이터 입력
- 샘플 데이터를 딕셔너리로 변환
- 딕셔너리로 변환된 데이터 내용 내부가 형태가 딕셔너리, 리스트 형이 아닐 경우?
- 샘플 데이터를 int(long) 형으로 변환
- 만약 ElasticSearch의 최소, 최대 값을 넘어가는 경우 string(text) 형으로 변환
- 예외 발생 경우 float형으로 변환
- 이마저도 예외 발생할 경우 string(text)형으로 변환
- 샘플 데이터를 int(long) 형으로 변환
- 만약 딕셔너리일 경우?
- 재귀호출(다시 맨 위로)
- 만약 리스트일 경우?
- 리스트 요소별로 분해 후 데이터가 딕셔너리일 경우 위 4번 함수 호출, 리스트일 경우 5번함수 재귀호출
- 만약 중첩 딕셔너리다?
- 딕셔너리 합치는 함수 호출(여기서도 재귀호출)
- 합쳐지면 다시 4번함수 호출
마무리
나는 이 프로그램을 유용하게 썼다.
수행자는 해당 프로그램을 의존하지 말 것.
깃허브
https://github.com/hbcha0916/Elastic_Parsing_and_mapping_quoted_data
반응형
'프로그래밍 > Python' 카테고리의 다른 글
[Gradio] ValueError: An event handler (transcribe_file) didn't receive enough output values (0) | 2023.11.02 |
---|---|
Python dictionaries deep merge - 중첩딕셔너리 Merge (0) | 2023.06.14 |