검색 서비스를 제공하는 CloudSearch

이재홍 http://www.pyrasis.com 2014.03.24 ~ 2014.06.30

CloudSearch 검색 도메인 엔드포인트 주소 활용하기

지금까지 AWS 콘솔을 이용해서 CloudSearch를 사용해보았습니다. 이번에는 검색 도메인의 엔드포인트 주소를 이용하여 문서를 올리고 검색을 해보겠습니다.

CloudSearch 인덱스 구조를 설계하고 검색 도메인 생성하기

검색을 위해 간단한 인덱스 구조를 설계합니다. 이름, 주소, 핸드폰 번호, 직급, 나이 정보를 표현한 문서를 예로 들겠습니다. 메모장이나 기타 텍스트 편집기를 열고 다음과 같이 작성한 뒤 data.json으로 저장합니다.

data.json

[
  {
    "type": "add",
    "id": "1",
    "version": 1,
    "lang": "ko",
    "fields": {
      "name": "홍길동",
      "address": "서울시 종로구",
      "phone": "010-1234-5678",
      "rank": "대리",
      "age": 27
    }
  },
  {
    "type": "add",
    "id": "2",
    "version": 1,
    "lang": "ko",
    "fields": {
      "name": "이율곡",
      "address": "서울시 성북구",
      "phone": "010-4567-8901",
      "rank": "과장",
      "age": 35
    }
  }
]

이와 같은 형식을 SDFSearch Data Format이라고 합니다.

  • type: 문서를 추가할 때에는 add, 삭제할 때에는 delete입니다. 문서의 내용을 수정하려면 type은 add로 설정하고 수정할 문서의 id를 지정합니다. 그리고 version 숫자를 높이면 됩니다.
  • id: 각 데이터의 고윳값입니다. 다른 데이터와 중복될 수 없고, 내용을 수정하거나 삭제할 때 사용됩니다. 영문 소문자 a 부터 z까지, 숫자 0부터 9까지, _(밑줄) 문자를 사용할 수 있으며 24자리까지입니다.
  • version: 문서의 버전입니다. 문서의 내용을 수정할 때 사용됩니다.
  • lang: 문서의 언어입니다. 영어는 en, 한국어는 ko를 사용합니다.
  • fields: 필드 목록입니다. 필드가 하나 이상 포함되어야 합니다.
    • 필드명: 64글자까지이며 영문 소문자, _(밑줄) 문자, 숫자를 사용할 수 있습니다. 필드명은 밑줄 문자로 시작할 수 없습니다.
    • 필드 자료형
      • 문자열: “hello”로 표현합니다.
      • 숫자: 1 또는 0.1로 표현합니다.
      • 배열: [1, 2, 3,] 또는 [“hello”, “world”]로 표현합니다.

이 데이터를 기반으로 검색 도메인을 생성하겠습니다. CloudSearch Dashboard를 클릭한 뒤 Create a New Domain 버튼을 클릭합니다.


그림 25-28 CloudSearch 검색 도메인 생성

CloudSearch 검색 도메인을 생성합니다(그림 25-29).

  • Search Domain Name: 검색 도메인 이름입니다. .(점)은 입력할 수 없습니다. exampledomain2를 입력합니다.
  • Desired Instance Type: 검색 도메인이 생성할 검색 인스턴스 유형입니다. 설정하지 않으면 search.m1.small을 사용합니다. 기본값 그대로 사용합니다.
  • Desired Replication Count: 검색 도메인의 복제 개수입니다. 데이터 저장 용량과는 상관 없고, 검색 트래픽이 많을 때 설정합니다. 5개까지 설정할 수 있습니다. 기본값 그대로 사용합니다.
  • Desired Partition Count: 생성할 검색 파티션 개수입니다. 검색 인스턴스 search.m2.2xlarge에서만 설정할 수 있고, 10개까지 생성할 수 있습니다.

설정이 완료되었으면 Continue 버튼을 클릭합니다.


그림 25-29 CloudSearch 검색 도메인 생성

CloudSearch 검색 도메인의 인덱스를 정의합니다. 방금 작성한 data.json을 이용하겠습니다. Analyze sample file(s) from my local machine을 선택하고 파일 선택 버튼을 클릭합니다(그림 25-30).

  • Analyze sample file(s) from my local machine: 사용자의 컴퓨터에 저장된 데이터를 분석하여 인덱스를 생성합니다.
  • Analyze sample object(s) from Amazon S3: S3 버킷에 저장된 데이터를 분석하여 인덱스를 생성합니다.
  • Analyze sample item(s) from Amazon DynamoDB: DynamoDB에 저장된 데이터를 분석하여 인덱스를 생성합니다.
  • Use a predefined configuration: 미리 정의된 설정을 사용합니다.
  • Manual configuration: 다음 페이지에서 사용자가 인덱스를 직접 정의합니다.


그림 25-30 CloudSearch 검색 도메인의 인덱스를 정의할 데이터 선택

파일 열기 창에서 방금 작성했던 data.json 파일을 선택하고 열기 버튼을 클릭합니다.


그림 25-31 분석할 파일 선택

파일을 열었으면 Create New Search Domain의 Continue 버튼을 클릭합니다.

data.json을 분석하여 인덱스가 생성되었습니다. Analysis Scheme에서 Address, Name, rank를 Korean으로 설정합니다. Phone과 같이 숫자로만 된 필드는 Korean으로 설정하지 않아도 상관없습니다. 설정이 완료되었으면 Continue 버튼을 클릭합니다.


그림 25-32 CloudSearch 검색 도메인에 사용할 인덱스 확인

CloudSearch 검색 도메인의 접근 정책을 설정합니다. 데이터 업로드용 엔드포인트 주소와 검색용 엔드포인트 주소에 대한 정책입니다. Search and Suggester service: Allow all. Document Service: Account owner only를 클릭합니다(그림 25-33).

  • Search and Suggester service: Allow all, Document Service: Account owner only: 검색은 모두 허용하고, CloudSearch를 생성한 AWS 계정만 데이터를 업로드 할 수 있습니다.
  • Allow everyone access to all services: 검색, 데이터 업로드를 모두 허용합니다. 아무나 데이터를 올릴 수 있으므로 권장하지 않습니다.
  • Deny everyone access to all services: 검색, 데이터 업로드를 모두 차단합니다. AWS 콘솔에서만 데이터를 올리고 검색할 수 있습니다.

설정이 완료되었으면 Continue 버튼을 클릭합니다.


그림 25-33 CloudSearch 검색 도메인 접근 정책 설정

지금까지 설정한 내용에 이상이 없는지 확인합니다. 이상이 없으면 Confirm 버튼을 클릭합니다


그림 25-34 CloudSearch 검색 도메인 설정 내용 확인

CloudSearch 검색 도메인 생성이 시작되었습니다. OK 버튼을 클릭합니다.


그림 25-35 CloudSearch 검색 도메인 생성 시작

CloudSearch 검색 도메인 목록에 방금 생성한 검색 도메인(exampledomain2)이 추가되었습니다. 완전히 생성되기까지 약 10분정도 소요됩니다.


그림 25-36 CloudSearch 검색 도메인 생성 중

CloudSearch 검색 도메인 생성이 완료되었습니다. 검색 도메인(exampledoamin2)의 세부 내용에 검색 엔드포인트 주소, 문서 엔드포인트 주소가 표시됩니다.


그림 25-37 CloudSearch 검색 도메인 생성 완료

아직 생성된 검색 인스턴스 개수가 0개라고 표시됩니다. 1분 정도 기다린 후 Refresh 버튼을 클릭하면 생성된 검색 인스턴스가 표시됩니다.


저작권 안내

이 웹사이트에 게시된 모든 글의 무단 복제 및 도용을 금지합니다.
  • 블로그, 게시판 등에 퍼가는 것을 금지합니다.
  • 비공개 포스트에 퍼가는 것을 금지합니다.
  • 글 내용, 그림을 발췌 및 요약하는 것을 금지합니다.
  • 링크 및 SNS 공유는 허용합니다.