아마존 웹 서비스를 다루는 기술 30장 - 10. CloudSearch

저작권 안내
  • 책 또는 웹사이트의 내용을 복제하여 다른 곳에 게시하는 것을 금지합니다.
  • 책 또는 웹사이트의 내용을 발췌, 요약하여 강의 자료, 발표 자료, 블로그 포스팅 등으로 만드는 것을 금지합니다.

AWS API, CLI 활용하기

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

CloudSearch

CloudSearch 검색 도메인에 데이터를 올리는 방법은 다음과 같습니다.

  • CloudSearchDomain 객체를 생성할 때 endpoint에 검색 도메인의 엔드포인트 주소를 설정합니다.
  • contentType: 데이터 형식입니다. application/json, application/xml을 사용할 수 있습니다.
  • documents: 검색 도메인에 올릴 데이터입니다. 문자열을 그대로 설정해도 되고, fs.readFile, fs.readFileSync 함수로 얻은 Buffer 형식의 변수를 설정해도 됩니다.
cloudsearch_1.js
var AWS = require('aws-sdk');
var fs = require('fs');
AWS.config.loadFromPath('./config.json');

cloudsearchdomain = new AWS.CloudSearchDomain({
  endpoint: 'doc-exampledomain2-7fq636cmiddehdtdfpa3d3s454.ap-northeast-1.cloudsearch.amazonaws.com'
});

var params = {
  contentType: 'application/json', // 필수
  documents: JSON.stringify([
    {
      '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
      }
    }
  ])
  //documents: fs.readFileSync('./data.json')
};

cloudsearchdomain.uploadDocuments(params, function (err, data) {
  if (err)
    console.log(err, err.stack);
  else
    console.log(data);
});
AWS CLI
$ aws cloudsearchdomain --endpoint-url http://doc-exampledomain2-7fq636cmiddehdtdfpa3d3s454.ap-northeast-1.cloudsearch.amazonaws.com upload-documents --content-type "application/json" --documents data.json

CloudSearch 검색 도메인에서 데이터를 검색하는 방법은 다음과 같습니다.

  • CloudSearchDomain 객체를 생성할 때 endpoint에 검색 도메인의 엔드포인트 주소를 설정합니다.
  • query: 검색어입니다.
  • sort: 정렬 설정입니다. <필드> asc, <필드> desc 형식입니다.
  • return: 결과 값에서 지정한 필드만 가져옵니다. 각 필드를 ,(콤마)로 구분하고 빈 칸이 있으면 안됩니다.
  • size: 검색 결과의 개수를 설정합니다.
cloudsearch_2.js
var AWS = require('aws-sdk');
AWS.config.loadFromPath('./config.json');

cloudsearchdomain = new AWS.CloudSearchDomain({
  endpoint: 'search-exampledomain-vczqocfxwcndcxuxtdscb4hw5m.ap-northeast-1.cloudsearch.amazonaws.com'
});

var params = {
  query: 'dicaprio', // 필수
  sort: 'title desc',
  return: 'title,_score,actors',
  size: 3
};

cloudsearchdomain.search(params, function (err, data) {
  if (err)
    console.log(err, err.stack);
  else
    console.log(data);
});
:AWS CLI
$ aws cloudsearchdomain --endpoint-url http://search-exampledomain-vczqocfxwcndcxuxtdscb4hw5m.ap-northeast-1.cloudsearch.amazonaws.com search --search-query "dicaprio" --sort "title desc" --return "title,_score,actors" --size 3

CloudSearch 자동완성을 사용하는 방법은 다음과 같습니다.

  • CloudSearchDomain 객체를 생성할 때 endpoint에 검색 도메인의 엔드포인트 주소를 설정합니다.
  • query: 검색어입니다.
  • suggester: 자동완성(suggester) 이름입니다.
  • size: 자동완성 검색 결과의 개수를 설정합니다.
cloudsearch_3.js
var AWS = require('aws-sdk');
AWS.config.loadFromPath('./config.json');

cloudsearchdomain = new AWS.CloudSearchDomain({
  endpoint: 'search-exampledomain-vczqocfxwcndcxuxtdscb4hw5m.ap-northeast-1.cloudsearch.amazonaws.com'
});

var params = {
  query: 'incep', // 필수
  suggester: 'title', // 필수
  size: 3
};

cloudsearchdomain.suggest(params, function (err, data) {
  if (err)
    console.log(err, err.stack);
  else
    console.log(data);
});
AWS CLI
$ aws cloudsearchdomain --endpoint-url http://search-exampledomain-vczqocfxwcndcxuxtdscb4hw5m.ap-northeast-1.cloudsearch.amazonaws.com suggest --query "incep" --suggester "title" --size 3

다른 함수들의 사용 방법은 다음 링크를 참조하기 바랍니다.
http://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/CloudSearch.html http://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/CloudSearchDomain.html


저작권 안내

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