[AWS] CloudSearch 사용하기

반응형

이번 글에서는 AWS의 검색 서비스인 CloudSearch를 사용해보도록 하겠습니다.

0. CloudSearch란?

대용량 데이터를 빠르게 검색할 수 있도록 검색 엔진을 제공해주는 서비스입니다.

Apache Lucene은 오픈 소스 검색 라이브러리이며, Apache Solr는 Apache Lucene을 사용한 엔터프라이즈용 검색 서버입니다. CloudSearch는 Apache Solr를 텍스트 검색 엔진으로 사용합니다.

검색 도메인 : 검색 인스턴스들의 집합이며 리전(Region)별로 생성됩니다.
검색 인스턴스 : 데이터를 저장하고, 인덱싱하고, 검색 결과를 도출합니다. 가용영역(AZ)별로 생성됩니다.

CloudSearch 검색 도메인에 데이터를 올리면 알아서 검색 인스턴스에 저장하고, 데이터 용량이 늘어나거나 트래픽이 늘어나면 자동으로 검색 인스턴스 개수를 늘려줍니다. 그리고 Multi-AZ 기능을 사용하면 검색 도메인의 전체 검색 인스턴스가 다른 가용 영역에 복제됩니다.

자세한 내용은 아래의 책을 참고하시길 바랍니다.

 

아마존 웹 서비스를 다루는 기술:실무에서 알아야 할 기술은 따로 있다!

COUPANG

www.coupang.com

1. 검색 도메인 생성하기

자 이제 검색 도메인을 생성해보겠습니다.

Cloud Search에 들어와 Create a new search domain 버튼을 클릭합니다.

image.png

생성할 도메인의 이름을 입력하고 Continue 버튼을 클릭합니다.

image.png

CloudSearch 검색 도메인의 초기 인덱스를 정의합니다. 선택한 데이터의 유형을 분석하여 초기 인덱스를 생성하게 됩니다. 저는 AWS에서 미리 정의해놓은 IMDB movies 데이터를 사용해 도메인의 인덱스를 정의하겠습니다. Use a predefiend configuration을 선택합니다.

image.png

생성된 Index들을 확인합니다.

image.png

다음으로 CloudSearch 검색 도메인에대한 접근 정책을 설정합니다. 이는 데이터 업로드용 엔드포인트 주소와 검색용 엔드포인트 주소에 대한 정책입니다. 검색은 모두 허용하고, CloudSearch를 생성한 AWS 계정에서만 데이터를 업로드 할 수 있도록 Search and Suggester service를 선택합니다. 선택하면 자동으로 Current Policy가 생성됩니다.

image.png

최종적으로 Confirm 버튼을 클릭해 검색 도메인을 생성합니다.

image.png

시간이 지나고 검색 도메인이 아래와 같이 생성되었습니다. 검색 도메인의 End point와 문서 업로드 도메인의 End point를 확인할 수 있습니다. 현재 검색할 수 있는 문서(Searchable Documents)는 0개입니다.

image.png

2. 검색 도메인에 데이터 올리기

이제 검색 도메인에 데이터를 올려보겠습니다. 데이터는 AWS에서 제공하는 IMDB 데이터를 활용하겠습니다. 이 데이터는 앞서 인덱스 생성시 사용한 데이터 입니다.

Upload Documents 버튼을 클릭합니다.

image.png

AWS에서 제공하는 IMDB 데이터를 사용하겠습니다. Predefiend data를 선택합니다.

image.png

선택한 데이터를 리뷰한 후 Upload Documents 버튼을 클릭합니다.

image.png

업로드가 완료되었습니다. Finish 버튼을 클릭합니다.

image.png

이제 검색 가능한 문서(Searchable Documents)의 수가 5000개로 증가하였습니다.

image.png

3. 검색 도메인에서 검색하기

자 이제 방금 올렸던 데이터를 검색해보겠습니다.

AWS에서 제공한 데이터가 IMDB 영화 정보이므로 영화에 관련된 키워드를 검색해보겠습니다. Run a Test Search 탭에서 Search 입력란에 dicapro를 입력하고 Go 버튼을 클릭합니다.

image.png

영화 디카프리오가 출현한 영화들이 조회됩니다. Filter Search Results에는 조회된 결과들의 집합을 보여주고 있습니다. 이 기능은 Facet 검색 기능입니다.

image.png

4. 자동완성 기능 사용하기

이번에는 자동완성 기능을 사용해보겠습니다.

Suggesters 탭에서 Add Suggester 버튼을 클릭합니다.

image.png

생성할 Suggester의 이름을 입력합니다. 자동완성 기능을 사용할 Field를 입력합니다. 영화 제목을 검색할 것이므로 title을 입력합니다. 자동완성에서 사용할 Fuzzy Matching 수준을 선택합니다. 저는 Low를 선택하겠습니다.

image.png

아래와 같이 Suggester가 생성되었습니다. Suggester를 사용하려면 이전에 생성한 인덱싱을 업데이트해야 합니다. 화면 상단의 Run indexing 버튼을 클릭합니다.

image.png

Ok 버튼을 클릭해 데이터를 다시 인덱싱 합니다. 인덱싱을 하는데에는 약 30분가량 소요됩니다.

자동완성 기능을 위한 인덱스가 생성되지 않으면 검색을 해도 자동완성 기능이 동작하지 않습니다.

image.png

인덱싱 생성이 완료되었습니다.

image.png

자 이제 다시한번 Run a Test Search 탭에 들어갑니다. 우측 상단의 Suggester 버튼에서 title 을 선택하고, 검색어를 입력하면 아래와 같이 자동완성 기능이 정상적으로 작동하는것을 확인할 수 있습니다.

image.png

5. 결론

간편하게 대용량 데이터 검색엔진 기능을 도입하고 싶으면?
-> CloudSearch를 사용하자.


파트너스 활동을 통해 일정액의 수수료를 제공받을 수 있음


반응형

댓글

Designed by JB FACTORY