개발 공부/Database

[검색엔진] Elasticsearch 사용법

journey 2021. 12. 26. 02:01
728x90

프로젝트하면서 사용했던 Elasticsearch 기본적인 사용법을 정리하려고 한다.

학원 선생님이 REST API에 대해 알아두면 좋다고 하셨는데 프로젝트하면서 쓸 수 있어서 좋은 경험이었다.👍👍

기본적으로 필요한 도구 3가지 설치하기.

엘라스틱 서치란 DB에 담겨있는 내용을 색인하여 빠르게 검색해 줄 수 있는 분석엔진이다.

1. Elasticsearch

https://www.elastic.co/kr/elasticsearch/

 

Elasticsearch: 공식 분산형 검색 및 분석 엔진 | Elastic

Elasticsearch는 속도, 수평적 확장성, 안정성 및 간편한 관리를 위해 설계된 선도적인 분산형 RESTful 무료 오픈 소스 검색 및 분석 엔진입니다. 무료로 시작하세요.

www.elastic.co

2. Logstash

https://www.elastic.co/kr/logstash

 

Logstash: 로그 수집, 구문 분석, 변환 | Elastic

Logstash(Elastic Stack의 일부)는 이 유연한 오픈 소스 콜렉션, 구문 분석 및 강화 파이프라인으로 모든 소스, 모든 형식의 데이터를 손쉽게 통합합니다. 무료 다운로드.

www.elastic.co

3. Kibana

https://www.elastic.co/kr/kibana

 

Kibana: 데이터 탐색, 시각화, 발견 | Elastic

무료로 Kibana 또는 전체 Elastic Stack을 다운로드하고 Elastic으로 몇 분 만에 데이터 시각화, 분석, 탐색을 시작하세요.

www.elastic.co

💡 🎅이 세가지를 합쳐서 ELK Stack 이라고 부른다.
(추후 경량의 단일 목적 데이터 수집기 제품군인 Beats를 추가해 Elastic Stack으로 명칭을 확장했다.)

위의 3가지를 모두 설치한다. 나는 C 드라이브에 3가지를 다 풀어줬다.

(C:/program files 밑에 설치하면 돌아가지 않는다고 하니 다른 곳에 설치합시다.)

First. 엘라스틱 설치 서버구동

엘라스틱서치 배치파일을 실행해 서버가 구동되게 해주자.

한글 검색을 위해 nori 형태소 분석기도 설치한다.

  • 형태소 분석기의 종류와 설치 방법이다.

https://esbook.kimjmin.net/06-text-analysis/6.7-stemming/6.7.2-nori

 

6.7.2 노리 (nori) 한글 형태소 분석기 - Elastic 가이드북

커뮤니티 한글 형태소 분석기 - 아리랑, 은전한닢, Open Korean Text

esbook.kimjmin.net

💡 elasticsearch-plugin install analysis-nori

  • 제거는 elasticsearch-plugin remove analysis-nori

그리고 인터넷 창에 로컬주소를 치면 본 화면이 나온다. 그렇다면 엘라스틱 서치를 실행할 준비는 됐다.

서버에 정상적으로 접근.

💡 http://localhost:9200/

Second. elasticsearch에서 사용할 index 만들어주기

kibana 배치파일을 실행해준다. 시간이 좀 걸리기 때문에 처음에 [warning] 이 나와도 당황하지 말고 기다려보자.

이 화면이 나오면 현재 설치된 엘라스틱서치와 키바나가 연결되어 키바나 서버를 이용 할 수 있는 것.

잘 연결이 되었는지 확인해보면

💡 http://localhost:5601/

잘 작동이 되고 있다는 것을 확인할 수 있다.

 

로딩 된 후 상단에 Dev tools를 클릭 해 Console로 들어온다. 이제 Console에서 모든 명령어를 입력 할 수있다. (GET, POST, DELETE, PUT)

 

! 시작하기 전 이 페이지에서 도움을 많이 받았다. (엘라스틱서치 가이드북 저자 김종민님)

http://kimjmin.net/2019/08/2019-08-how-to-analyze-korean/

 

Elasticsearch 에서 한글 형태소 분석 잘 해보기 - Jongmin's Lifelog

요즘 서울시 지하철 대시보드를 다시 만들고 있습니다. 아래는 녹화한 첫 번째 영상입니다. 공공데이터로부터 추출, 색인, 매핑 및 템플릿 설정 부분까지 진행했는데 이번 블로그에서 다루는 내

kimjmin.net

참고로 노리 매핑에서 많이 헤맸는데, 그건 공식 가이드북을 참고해서 내가 원하는 형태로 매핑을 할 수 있었다.

https://esbook.kimjmin.net/06-text-analysis/6.7-stemming/6.7.2-nori

 

6.7.2 노리 (nori) 한글 형태소 분석기 - Elastic 가이드북

커뮤니티 한글 형태소 분석기 - 아리랑, 은전한닢, Open Korean Text

esbook.kimjmin.net

나는 축제 및 공연 정보를 검색하기 위해 festivals라는 인덱스를 생성해서 축제 개최지 주소(addr1,addr2)와 타이틀(title)에만 적용했다.

 

  • 결과

원래 대전광역시까지 제대로 검색해야 결과가 나왔는데, 이젠 대전까지만 검색해도 잘 나온다.

(감격. 아 너무 오래걸렸어.. 박수😂👏)

 

Third. DB에 있는 데이터들을 logstash를 이용해 엘라스틱서치 서버에 넣어주자(pipeline잡기)

이후 AWS ES 도메인을 사용하면서 CSV파일을 직접 임포트하는 건 라이센스가 따로 필요했다. 로그스테이시로 데이터를 서버에 넣어두는 법도 알아두려고한다.

💡 C:\logstash-7.11.2\config\logstash-sample.conf

파일을 메모장이나 VScode 등 으로 볼 수 있게끔 열어준다.

설정을 해줬다면 cmd를 켜서 logstash\bin 파일로 경로를 설정해주고 이 명령어를 친다.

💡 .\logstash -r -f "../config/logstash-sample.conf"

error 메세지가 보이지 않으면 잘 들어간 것!

수정 후 DB를 logstash에 넣어주는 명령어를 입력한 뒤 에러메세지가 보이지 않는다면 성공!

GET 방식으로 데이터 확인 해주기

GET festivals/_search

 

다음 게시글에선 AWS Elasticsearch Service 이용하여 도메인 생성하는 법을 알아보겠습니다.