참고: https://catalog.us-east-1.prod.workshops.aws/workshops/de4e38cb-a0d9-4ffe-a777-bf00d498fa49/ko-KR

고객사에서 OpenSearch 서비스를 활용 중이라 무슨 서비스인지 알고 싶어서 무작정 따라해봤다..!


Amazon OpenSearch 클러스터 생성

  • create domain

테스트니까 네트워크는 퍼블릭으로, 나머지 설정들은 디폴트로 놔두면 된다..

(뭐시기 에러뜨면.. 고급 클러스터 설정 쪽 최대 절 수 그냥 1024로 설정..)

생성 완료까지 시간이 좀 걸린다.

 

AWS Blog 문서를 Amazon OpenSearch로 검색하기

  • cloud9 인스턴스 생성
  • OpenSearch - 인덱스 생성

OpenSearch 대시보드에 들어간다.

로그인의 경우 아까 클러스터 생성할 때 사용했던 ID/Password를 사용하면 된다.

해당 버튼을 클릭하고 접속한다.

private → confirm

메뉴의 Dev Tools 를 클릭한다.

(검색을 위한 index 생성하고 mapping 설정)

아래 코드 붙여넣고 화살표 클릭해서 실행

PUT /aws-blog
{
  "mappings": {
    "properties": {
      "title": {
        "type": "text",
        "fields": {
          "keyword": {
            "type": "keyword",
            "ignore_above": 256
          }
        }
      },
      "author": {
        "type": "keyword"
      },
      "body": {
        "type": "text"
      },
      "category": {
        "type": "text",
        "fields": {
          "keyword": {
            "type": "keyword",
            "ignore_above": 256
          }
        }
      },
      "date": {
        "type": "date",
        "format": "dd MMM yyyy HH:mm:ss z"
      },
      "url": {
        "type": "keyword"
      }
    }
  }
}

여기까지의 단계가 AWS blog 문서들을 색인할 index를 생성한 것!

 

  • Blog 문서를 index에 저장하기

cloud9에 접속 후 아래 명령어를 입력한다.

git clone https://github.com/jinuland/aws-blog-crawler.git

해당 파일을 클릭하고 host, id, password를 입력한다. host는 OpenSearch의 도메인 엔드포인트이다.

cd aws-blog-crawler
./ingest_ko.sh

위 명령어 처럼 프로그램을 실행시킨다. (AWS Blog 글들이 OpenSearch 도메인으로 색인된다.)

 

  • OpenSearch 대시보드에서 문서 검색해보기

OpenSearch의 DevTools로 돌아가 아래처럼 입력한다.

GET /aws-blog/_search
{
  "query": {
    "match_all": {
    }
  }
}

 

Full Text 검색

  • Dev Tools에서 API 호출

(workshop 기준으론 Dev Tools로  API를 호출하지만, Application에서 검색 서비스 제공을 하고 싶으면 

API Gateway + Lambda + OpenSearch로 구현할 수 있다.)

즉, Dev Tools에서 아래처럼 쿼리를 날리면 원하는 결과를 얻을 수 있다.

# 자연어 검색
GET /aws-blog/_search
{
  "query": {
    "multi_match": {
      "query": "aws 리전 및 인프라",
      "fields": ["title","body"]
    }
  }
}

# Author 별 Aggregation
GET /aws-blog/_search
{
  "query": {
    "bool": {
      "filter": [
        {
          "term": {
            "title": "데이터"
          }
        }
      ]
    }
  },
  "aggs": {
    "category": {
      "terms": {
        "field": "author"
      }
    }
  }
}

위와 같이 OpenSearch를 활용한다... 

시각화를 구현하진 않았지만.. 시각화까지 가능함!

 

[OpenSearch 기능]

https://aws.amazon.com/ko/opensearch-service/features/

참고 1: https://realyun99.tistory.com/153

참고 2: https://realyun99.tistory.com/154

위의 포스팅 부터 확인하고 오세요~


OpenSearch Service

(Apache 2.0 라이선스 하에 제공되는 분산형 커뮤니티 기반 100% 오픈소스 검색 및 분석 제품군)

(실시간 애플리케이션 모니터링, 로그 분석 및 웹 사이트 검색과 같이 다양한 사용 사례에 사용됨)

  • CloudFormation 작업

해당 파일을 다운로드.

cfn.yaml

그 후에 스택을 생성해주자.

파라미터에 SourceIP에는 내 ip를, ThingName에는 저번에  생성했던 iot 디바이스 이름을 넣어주자.

(꽤나 오래 걸린다..)

 

스택 리소스에서 Domain을 클릭해 들어가자.

해당 url에 들어가자.

 

<Stack 생성 완료의 결과물>

- OpenSearch 도메인

- IoT 규칙(opensearch_rule)

- IoT 규칙에서 사용되는 IAM 역할

 

  • OpenSearch 작업

(메뉴 → Discover)

스크립트를 돌리는 상태에서 실행해야함(cloud9)

위와 같은 화면이 보이고 Create index pattern을 클릭하자.

자동으로 데이터가 분석되는 상황을 확인할 수 있다.

 

다시 메뉴 → Discover로 돌아가보면

OpenSearch 대시보드 화면에 데이터가 등록되어 있는지 확인이 가능하다.

 

(메뉴 → Visualize)

Line 선택 → timestamp* 선택

위와 같이 설정해주고 업데이트 클릭

SAVE 버튼 누르고 원하는 title 달아서 저장 가능

(입맛대로 설정을 변경해서 새 그래프를 추가해 사용 사례에 맞는 대시보드로 활용하면 될듯!)

 

 

❗ 세상이 참 좋아졌다는 것을 느낀다😁 ❗

+ Recent posts