-
[PYTHON] KeyError : 'skipped'문제해결 2021. 12. 31. 19:18반응형
사용 라이브러리 : Elasticsearch 7.7.0
오류 발생 : ES 데이터를 긁어오는 파이썬 코드가 있는데, 어느날 부터 갑자기 안돌아가기 시작. 코드를 변경한 적 없음. 잘 동작하는 걸 확인한지 몇일 안되었는데, 테스트하려니 갑자기 안됨. Log4j라이브러리 취약점 수정한것 밖에 없음.
helpers.scan을 사용하는 부분에서 오류 발생
자꾸 KeyError : 'skipped'라는 오류가 뜨기 시작해서 구글링
원인 : 기존 데이터를 가져오던 ES 버전이 2점 대였던 것으로 기억하는데, 어느새 5.5 버전으로 되어 있는 것을 확인. 몇일 사이에 말도 없이 ES 버전을 업그레이드 했던 것이다. 2버전에는 ES검색을 할 경우 결과에 skipped라는 키가 ["_shards"] 아래에 항상 나오던 모양인데, 버전이 높아지면서 나올때도 있고 안나올때도 있게 바뀐것 같음. 안나올때는 키를 찾을 수 없으니깐 에러가 나는 거고
참고 : https://github.com/elastic/elasticsearch-py/issues/1450
어떤 따거가 친절하게 스샷과 해결법까지 적어 놓으셨다.
해결 :
1. ES버전을 7.0.0으로 revert한다..?
--> 아마 Elasticsearch 라이브러리 버전을 말하는것 같은데.. ES버전을 내리는 건 좀 애바인듯. 그리고 나의 경우에는 5.5버전으로 7.0보다 한참 낮은데...
2. 라이브러리 수정
--> 환경자체가 인터넷에 연결되어서 라이브러리를 받을 수 있는 형편이 안됨. 오프라인이라 라이브러리 하나 적용하는 것도 엄청 힘든 일이 되는 상황이라. 라이브러리를 수정하기로 한다.
pip list | grep search
-->7.7.0버전이 깔려 있다는 것을 확인하고 라이브러리 py파일 이름을 찾아봄. 따거형이 적어놓은 스샷에는 actions.py이므로 이 파일을 찾는다.
sudo find / -name 'actions.py'
--> 그 다음 파일을 열어서 수정
455, 461, 470라인의 resp["_shards"]["skipped"] 부분을 resp["_shards"].get("skipped", 0)으로 수정했다.
정상 작동됨. 일단 해결
반응형'문제해결' 카테고리의 다른 글
[Python3]ImportError: libpq.so.5: cannot open shared object file: No such file or directory (0) 2022.01.09 [PYTHON] socket.gaierror: [Errno -3] name resolution에서 일시적인 실패 (0) 2022.01.08 궁그매 (0) 2020.04.21 [Docker] 2. ElasticSearch Container 띄우기 (0) 2020.02.04 [LINUX] 하드디스크 속도 측정 (0) 2020.01.21