elasticsearch + 한국어 형태소 분석기 색인 시 운영 경험 공유.

Elastic/Elasticsearch 2013. 1. 15. 23:48

역쉬 쉬운게 없군요.. 
드뎌 elasticsearch 랑 kr analyzer 랑 문제를 해결했습니다.

제가 es 의 clustering 구성을 master node 를 두개로 구성했습니다.
그리고 색인 시 20개의 thread 를 생성해서 색인 데이터를 request 했구요.
물론 master node 한대를 target 으로 하고 request 했지요.

근데 es 내부에서 자동으로 master 끼리 분산 처리를 하더군요.

첨에는 소스 보기 귀찮아서 환경이랑 설정만 가지고 삽질을 했는데.. 도저희 해결이 안되서 소스를 직접 수정해서 디버깅을 하기 시작 했습니다.

짜잔.. ^^
해결책은 비교적 쉬운 곳에 있었습니다.

master node 를 하나만 사용하거나 thread safe 하도록 kr analyzer 소스를 조금 손봐주는 것입니다.

결론만 보면 정말 쉬운데요.. ㅋ 그 과정이 참 오래 걸렸내요.. 
그래도 뭐 빨리 찾았다고 생각 합니다.. ㅎㅎ

이상 es 운영 경험 공유를 맞칩니다. ^^


[해결방법1] <- 이건 근본해결책도 아니고 그냥 쓰레기 입니다. 그리고 data node 설정도 틀렸내요. 
- 서버 1 : node.master: true, node.data: true
- 서버 2 : 
node.master: false, node.data: true
아마도 
- 서버 1 : node.master: true, node.data: false
- 서버 2 : 
node.master: false, node.data: true
-> 다른 분이 테스트 해보시고 안된다고 그러시내요 ^^;


[해결방법2]

- SyllableUtil.java 에서 getSyllableFeature() 이 함수 내 FileUtil.readlines 를 threadsafe 하게 수정
- 저는 synchronized(lock) 으로 처리 했습니다.

: