개발 공부/Database

[검색엔진] AWS Elasticsearch Service 이용하기

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

원래 리눅스기반 학원 서버에 ELK를 모두 설치해서 적용하려고 했으나, logstash를 통해 값을 연동하는 곳에서 알 수없는 오류가 발생했다. 고치면 고칠수록, 수정하면 수정할 수록 돌이킬 수 없는 길을 걸어가고 있다는걸 느꼈고, 머리로는 알겠는데 마음이 몰라서 약 3일은 계속 붙잡고 있었다. 아예 구동이 되지 않는 오류라서 미련없이 포기하고 aws에서 제공하는 Elasticsearch service를 이용했다.😅

0. 새 도메인 생성

Amazon Elasticserch Sercive에서 새 도메인 새성하기.

1. 배포 유형 선택

2. 도메인 구성

3.엑세스 및 보안 구성

4. 위의 과정을 완료하면 도메인 상태

비활성화로 부터 약 10분 정도 기다리면 활성화 상태로 바뀌게 되고 엔드포인트, Kibana가 생긴다.

💡 엔드포인트 : 복사해서 주소창에 입력하여 상태를 보는데 이 화면이 나와야 성공이다.

혹시 바로 이 화면이 나오지 않는다면!

엑세스 정책 수정을 모든 곳에서 접근을 허용하도록 변경해야한다. 허나 좋은 방법도 아니고 권장하지도 않지만 나는 로컬과 사용하는 서버에서 접근을 모두 가능하게끔 해야해서 액세스를 모두 개방해놓았다.

 

(혹은 사용자 지정 액세스 정책을 눌러 접근 허용할 IP주소를 입력해서 개방할 수 있다.) 전송을 누르면 도메인 상태 : 비활성화에서 똑같이 10분 뒤에 활성화로 바뀌게 될 것이다. 그리고 엔트포인트 주소를 복사해 url 입력하면 이 화면이 나올 것이다. 이제 엘라스틱을 시작할 준비가 됐습니다~~

5. Kibana Kibana

url을 입력하면 나오는 화면! 반갑다!!

Explore on my own 을 클릭해 내 마음대로 지정하기

Dev tools로 들어와서 인덱스 매핑 하기.(위에서 로컬서버로 설정한 방법과 같다.)

 

💡 로컬에서는 내가 원하는 형태소 plugin을 설치 가능했는데 (난 nori형태소를 설치했었다.) AWS Elascticsearch에서는 nori형태소 플러그인은 지원하지 않고 동전한닢 형태소를 지원했다. 그래서 이에 맞게끔 매핑을 다시 지정해주었다. 중요하다!

 

모두 true로 뜨면 성공이고
index 이름을 festivals로 만들어줘서 결과에 index:festivals로 화면이 떴다.

 

아까 엔드포인트 주소를 복사해 이렇게 url에 입력해주면 index에 대한 설명이 나온다.

 

💡 엔트포인트주소/index이름?pretty

 

6. 로컬에 설치한 logstash를 이용해 aws 엘라스틱서치에 데이터를 넣자

아까 Elasticsearch를 만들때 버전을 7.11 로 만들었는데 Logstash도 같은 7.11 버전으로 다운받았다.

위와 똑같은 방법으로 logstash-sample.conf 파일을 열어 output의 hosts를 aws 서버로 바꾼다.

💡 엔드포인트주소**:443** 이라고 꼭!!!! 써줘야한다. :443을 써주지 않으면 기본적으로 logstash는 이게 아무것도 써져있지 않는 걸로 인식을 해버려 자동으로 :5601 (Elasticsearch port번호) 를 붙어서 입력이 된다. (이미 엔드포인트 주소에 5601이 포함이 되어있는데 또 5601을 붙여버리는 셈)

그리고 우리 서버는 SSL 인증서를 받았기 때문에 ssl ⇒ true 로 입력해줘야한다. 진짜 중요한 부분이다.

 

설정을 해줬다면 cmd를 켜서 logstash\bin 파일로 경로를 설정해주고 아래 명령어를 입력한다.

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

Successfully~~라며 내가 입력한 쿼리문이 나오면 성공!

 

💡 엔드포인트주소/index이름/_search?pretty

 

주소창에 입력하면

밑으로 DB에 있는 정보들이 검색된다. 정말 수고하셨습니다.🙇‍♀️🙇‍♂️

 

다음 게시물에선 스프링과 연결하는 법을 알아보겠습니다~