Monday, April 25, 2016

[빅데이터프로젝트] AngularJS + ElasticSearch 연동 방법 및 검색 예제

빅데이터



여전히 빅데이터 프로젝트에 참여 중입니다.
그리고 여전히 이 기술, 저 기술 설치해 보고
구동해 보고, 예제 실행해 보고 있습니다.
하지만 이제 시간이 지나감에 따라 결과도
내야 되는 시점이 오고 있다는 걸 느낍니다
점점 압박이 들어 오네요 ㅠㅠㅠㅠ

요 며칠 계속 붙자고 있었던


ElasticSearch



형태소 분석기를 조사해 보니 수집, 인덱싱,
분석 등의 단계를 거치는데 각각의 단계를
어떻게 처리할 것인가 영어이냐 한글이냐에
따라 다양한 방법들이 존재했습니다.
그런데 형태소 분석을 함에 있어서
한글을 분석해 주는 api는 영어에
비해 맞지 않았고, 정확도도 떨어지는
거 같았습니다. 그래도 다행히
방법이 전혀 없지는 않았습니다.

카이스트에서 만든 java/python/R
버전에의 형태소 분석기가 일단
1차 후보로 뽑혔었는데 하둡을 통한
분산처리와 인덱싱 작업을 고려하면서
ElasticSearch 쪽으로 많이 기운 상태입니다.

ElasticSearch 자체에서 인덱싱을 해주고
검색 기능까지 제공을 해주더라구요
그리고 무엇보다 ElasticSearch 전용
한글 형태소 분석기도 있었구요~

무엇보다 현재 R언어는 되도록 사용하지
않으려고 하고 있고, 현재까지 정해진
아키텍처에서도 ElasticSearch가
잘 맞는 걸로 생각되고 있습니다.


위에 링크된 사이트로 가면 엘라스틱서치를
내려 받을 수 있습니다. 압축 풀고 bin 디렉토리에
있는 ealasticsearch.bat를 실행하니 윈도우에서도
바로 실행 됐습니다!!!! 리눅스에서도 tar 압축을 푸니
리눅스에서도 한 번에 정상적으로 실행됐습니다!!!
이렇게 고마울 수가 ㅠㅠㅠㅠ

하지만 전 한글 형태소 분석기인 은전한닢을
엘라스틱서치에 연동해야 되서 좀 더 추가적인
작업을 했습니다.



참고한 사이트 두 개 입니다.
위의 내용대로 설치한 후
bin 디렉토리에 가서

./elasticsearch -Djava.library.path=/usr/local/lib

위에 명령어를 쳐주면 정상 구동 됩니다~


정상적으로 구동되면 위와 같은 내용이 뜨고,
엘라스틱서치 서버가 하나 뜨는데 9200 포트를
사용합니다! 9300 포트도 있는 거 같은데
정확한 기능은 아직은 모르겠습니다 ㅠㅠ
참고로 전 elasticsearch 1.6 버전을 설치했습니다.
(현재 최신 버전은 2.x.x)
이유는 한글형태소분석기 은전한닢이 엘라스틱서치
1.6에서 돌아가는 거 같더라구요...

굳이 은전한닢을 설치하지 않아도 엘라스틱서치
내부적인 명령어로 한글 저장이나 검색은 되지만
여러 제약사항이 있어서 깔끔하게 은전한닢
설치했습니다~

Angular JS


리눅스 터미널 상에서 엘라스틱서치 명령어가
정상적으로 돌아가는 것까지 확인은 했지만
저희는 이 기능을 웹 화면에서 서버에 호출해야
됩니다~! 그리고 더 문제는 이 화면 개발 작업을
기존에는 사용하지 않던 AngularJS라는 놈을
사용해서 개발해야 됩니다.
그래서 요즘 좀 공부하고 있는 녀석이죠...
저는 자바스크립트를 이용해서 개발해 본적이
없어서 이 angularJS라는 놈의 장점을
확연하게 느낄 순 없지만 JavaScript 를 사용했던
분한테 물어보니 이 AngularJS라는 놈이 좀
신기한 놈이긴 한 거 같습니다 ㅎㅎㅎ

AngularJS를 공부해 보셨던 분이라면 아시겠지만
scope, controller, 지시자, directives, module 등
새로운 개념들이 많이 나옵니다.


위에 사진이 현재 저희의 AngularJS
프로젝트의 구성입니다.
확실하게 MVC 패턴으로 나뉘어 있고,
HTML5과 JavaScript 언어를 사용하고
이클립스가 아닌 인텔리J라는 IDE를
사용하고 있습니다.
완전히 저희 회사에서 저희 프로젝트만
이단아가 되어 가고 있습니다 ㅎㅎㅎ

하지만 분명히 신기하고 배울 가치가
있는 녀석입니다!!!!
확실히 기술이란 건 대단한 거 같습니다!


어찌 되었든 위에 캡처한 사진이 서버에 떠있는
ElasticSearch 서버와 웹이 통신해서
얻어낸 결과를 화면에 출력한 결과입니다.
이틀 동안 삽질해서 얻은 결과입니다 ㅠㅠ

전체적으로 두 개의 단락이 있는데 
첫 번째 단락은 ElasticSearch에
저장되어 있는 내용을 출력한 결과이고
마지막 한 줄은 웹과 엘라스틱서치 서버가
최초 연결 시 통신한 결과입니다~~~

이제 과제는 은전한닢의 결과도 얻어오는
겁니다... 그리고 화면에서 데이터를 저장하고
더 나아가서는 HDFS에 저장된 내용을 읽어와
동일한 작업을 수행한 후 화면에 결과를
보여주는 겁니다... 정말 끝이 없네요 ㅎㅎ
그러다 보니 벌써 이번 주도 끝이 나고
있습니다 ㅎㄷㄷㄷㄷㄷ

디테일한 내용은 다음에 시간이 되면
올려 보도록 하겠습니다!
일단 퇴근 ㅋㅋㅋㅋㅋ

No comments:

Post a Comment