Amazon Web Services 한국 블로그

Amazon Elasticsearch Service, 한국어 분석을 위한 ‘은전한닢’ 플러그인 지원

Amazon Elasticsearch Service에서 유명한 오픈 소스 한국어 텍스트 분석기인 은전한닢(Seunjeon) 플러그인을 지원합니다. 이를 통해Amazon ES를 사용하는 개발자가 한국어 문서에 대한 전체 텍스트 검색을 쉽게 구현할 수 있습니다. 본 플러그인은 내부적으로 한국어 사전을 사용하며 복합어를 인식하고 문맥에 따라 단어를 구분할 수 있습니다.

각 개발자는 플러그인을 사용하여 토큰화(문자열을 단어로 분리), 형태소 분석(텍스트를 루트 형식으로 변환), 중지 단어 제거 (자주 사용하는 값이 낮은 단어), 동의어 매칭 기능 등을 기반으로 한 한국어 텍스트 분석 작업을 수행 할 수 있습니다.

Elasticsearch 버전 5.1 이상을 실행하는 Amazon Elasticsearch Service의 모든 새 도메인에서 플러그인을 사용할 수 있습니다. 플러그인은 Elasticsearch 클러스터가 설정 될 때 자동으로 설치되므로 개발자는 사전 설치 단계 없이 색인 맵핑에서 직접 참조 할 수 있습니다.

한글 검색 해보기

먼저 Amazon ES에서 한국어 풀텍스트 검색을위한 은전한닢 플러그인을 활성화합니다. ES 관리 콘솔에서 새로운 도메인을 하나 만든 후, 아래와 같이 활성화 하면 됩니다.

$ curl -XPOST 'https://search-korean-text-xxxxx.ap-northeast-2.es.amazonaws.com/mytext/' -d ' {
    "settings":{
        "analysis":{
            "tokenizer" : {
                "seunjeon" : {
                    "type" : "seunjeon_tokenizer"
                }
            },
            "analyzer" : {
                "korean" : {
                    "type" : "custom",
                    "tokenizer" : "seunjeon"
                }
            }
        }
    },
  "mappings": {
    "data": {
      "properties": {
        "title": {
          "type": "text",
          "analyzer": "korean"
        },
        "text": {
          "type": "text",
          "analyzer": "korean"
        }
      }
    }
  }
}'
{"acknowledged":true}

아래는 간단한 한국어 문장을 인덱스에 추가하고, 이를 검색하는 예제입니다.


$ curl -XPOST 'https://search-korean-text-xxxxx.ap-northeast-2.es.amazonaws.com/mytext/data/' -d  '
  {
    "title" : "검색 제목",
    "text"  : "검색 결과를 테스트 합니다"
  }'
{"_index":"mytext","_type":"data","_id":"AVAmDgheeFCp6h-hHJoZ","_version":1,"created":true}

이제 간단하게 검색 테스트를 해보겠습니다.

$ curl -XGET 'https://search-korean-text-xxxxx.ap-northeast-2.es.amazonaws.com/mytext/data/_search' -d '
  {
  "query":{"match":{"text": {"query": "검색", "analyzer": "korean"}}}
  }'
{
    "took": 8,
    "timed_out": false,
    "_shards": {
        "total": 5,
        "successful": 5,
        "failed": 0
    },
    "hits": {
        "total": 2,
        "max_score": 0.32180142,
        "hits": [
            {
                "_index": "mytext",
                "_type": "data",
                "_id": "AVAmDbFReFCp6h-hHJoY",
                "_score": 0.32180142,
                "_source": {
                          "title" : "검색 제목",
                          "text"  : "검색 결과를 테스트 합니다"
                }
            },

정식 출시

은전한닢을 비롯해서 다양한 지원 플러그인을 보시려면, 버전별 지원 목록을 참고하시기 바랍니다.

Amazon Elasticsearch Service는 미국 동부 (버지니아, 오하이오), 미국 서부 (오레곤, 캘리포니아), AWS GovCloud (미국), 캐나다 (중부), 남아메리카 (상파울루), EU 아일랜드, 런던, 프랑크푸르트, 파리), 아시아 태평양 (싱가포르, 시드니, 도쿄, 서울, 뭄바이), 중국 (Ningxia) 등에서 사용 가능합니다.

Update. 2021년 9월 부터 Amazon Elasticseaech Service는 Amazon OpenSearch Service로 바뀌었습니다.

Channy (윤석찬);