본문 바로가기
카테고리 없음

[AWS] Elasticsearch Service 정리

by study4me 2021. 4. 1.
반응형

개념

Elasticsearch : 분산형 RESTful 검색 및 분석 엔진

특징 : 오픈소스, 검색 및 분석 엔진, 분산형, Apache Lucene 기반, 

Elasticsearch는 데이터를 쉽게 처리하고 액세스 할 수 있도록 합니다.

Elastic Stack의 핵심 구성 요소

 

Elasticsearch는 어디에 사용되나요?

더보기

Elasticsearch의 속도와 확장성, 그리고 수많은 종류의 콘텐츠를 색인할 수 있는 능력은 다음과 같은 다양한 사용 사례에 이용될 수 있다는 뜻입니다.

  • 애플리케이션 검색
  • 웹사이트 검색
  • 엔터프라이즈 검색
  • 로깅과 로그 분석
  • 인프라 메트릭과 컨테이너 모니터링
  • 애플리케이션 성능 모니터링
  • 위치 기반 정보 데이터 분석 및 시각화
  • 보안 분석
  • 비즈니스 분석

Elasticsearch는 어떻게 작동하나요?

더보기

로그, 시스템 메트릭, 웹 애플리케이션 등 다양한 소스로부터 원시 데이터가 Elasticsearch로 흘러들어갑니다. 데이터 수집은 원시 데이터가 Elasticsearch에서 색인되기 전에 구문 분석, 정규화, 강화되는 프로세스입니다. Elasticsearch에서 일단 색인되면, 사용자는 이 데이터에 대해 복잡한 쿼리를 실행하고 집계를 사용해 데이터의 복잡한 요약을 검색할 수 있습니다. Kibana에서 사용자는 데이터를 강력하게 시각화하고, 대시보드를 공유하며, Elastic Stack을 관리할 수 있습니다.

Elasticsearch 인덱스는 무엇인가요?

더보기

Elasticsearch 인덱스는 서로 관련되어 있는 문서들의 모음입니다. Elasticsearch는 JSON 문서로 데이터를 저장합니다. 각 문서는 일련의 키(필드나 속성의 이름)와 그에 해당하는 값(문자열, 숫자, 부울, 날짜, 값의 배열, 지리적 위치 또는 기타 데이터 유형)을 서로 연결합니다.

Elasticsearch는 역 인덱스라고 하는 데이터 구조를 사용하는데, 이것은 아주 빠른 풀텍스트 검색을 할 수 있도록 설계된 것입니다. 역 인덱스는 문서에 나타나는 모든 고유한 단어의 목록을 만들고, 각 단어가 발생하는 모든 문서를 식별합니다.

색인 프로세스 중에, Elasticsearch는 문서를 저장하고 역 인덱스를 구축하여 거의 실시간으로 문서를 검색 가능한 데이터로 만듭니다. 인덱스 API를 사용해 색인이 시작되며, 이를 통해 사용자는 특정한 인덱스에서 JSON 문서를 추가하거나 업데이트할 수 있습니다.

 

 

 

 

 

Elastic Stack : 데이터 수집, 보강, 저장, 분석, 시각화를 위한 무료 개방형 도구 모음

특징 : ELK Stack(Elasticsearch, Logstash, Kibana)이라고 부르기도함

 

 

Logstash : 서버 사이드 오픈 소스 데이터 처리 파이프라인용도 : 데이터를 집계하고 처리하여 Elasticsearch로 전송하는데 사용. 다양한 소스에서 동시에 데이터를 수집하고, 이를 강화하고 변환한 다음, Elasticsearch에서 색인되도록 함.

 

Kibana : Elasticsearch를 위한 시각화 및 관리 도구

용도 : 실시간 히스토그램, 선 그래프, 파이 차트, 지도 등을 제공

 

 


Amazon Elasticsearch Service

(Amazon ES)


AWS 클라우드에서 Elasticsearch 클러스터를 쉽게 배포, 운영 및 확장 할 수있는 관리 형 서비스

Elasticsearch is 오픈 소스 검색 및 분석 엔진

Using 로그분석, 실시간 애플리케이션 모니터링, 클릭 스트림 분석

 

Amazon ES Domain 의미 : Elasticsearch 클러스터Domain은 사용자가 지정하는 설정, 인스턴스 유형, 인스턴스 수, 스토리지 리소스가 있는 클러스터각 인스턴스는 하나의 Elasticsearch 노드로 작동

 


Amazon Elasticsearch Service 시작하기

1단계 : 도메인 생성

- Elasticsearch Service에서 새 도메인 생성 선택

- 배포유형으로 개발 및 테스트 선택

- 최신버전 선택

- 도메인 이름 제공 : ex) movies

- Custom endpoint 설정 무시

- 데이터 노드에서 t3.small.elasticsearch 선택

- 나머지 설정 무시하고 다음

- 공용 액세스 도메인 사용 (네트워크 구성->public access)

- Fine-grained access control을 위해 Create master user 선택. user name과 password 제공

- saml, cognito 인증 무시

- 도메인 액세스 정책 : 도메인에 오픈 액세스 허용 (Fine-grained access control은 인증을 처리한다. domain access policy를 처리하는게 아니다.)

- 암호화 설정 기본값으로 유지

- 새 도메인은 일반적으로 초기화하는데 15~30분이 걸림.  도메인이 초기화 된 후 엔드 포인트를 기록.

 

 

2단계 : 인덱싱을 위해 Amazon ES 도메인에 데이터 업로드

소량의 테스트 데이터를 Amazon Elasticsearch Service (Amazon ES)에 업로드하기위한 간결한 자습서

curl을 사용해 도메인에 데이터를 업로드한다.

단일 문서 업로드

curl -XPUT -u 'master-user:master-user-password' 'domain-endpoint/movies/_doc/1' -d '{"director": "Burton, Tim", "genre": ["Comedy","Sci-Fi"], "year": 1996, "actor": ["Jack Nicholson","Pierce Brosnan","Sarah Jessica Parker"], "title": "Mars Attacks!"}' -H 'Content-Type: application/json'

여러 문서 업로드

bulk_movies.json 파일을 만든다. 내용은 아래와 같다.

{ "index" : { "_index": "movies", "_id" : "2" } }
{"director": "Frankenheimer, John", "genre": ["Drama", "Mystery", "Thriller", "Crime"], "year": 1962, "actor": ["Lansbury, Angela", "Sinatra, Frank", "Leigh, Janet", "Harvey, Laurence", "Silva, Henry", "Frees, Paul", "Gregory, James", "Bissell, Whit", "McGiver, John", "Parrish, Leslie", "Edwards, James", "Flowers, Bess", "Dhiegh, Khigh", "Payne, Julie", "Kleeb, Helen", "Gray, Joe", "Nalder, Reggie", "Stevens, Bert", "Masters, Michael", "Lowell, Tom"], "title": "The Manchurian Candidate"}
{ "index" : { "_index": "movies", "_id" : "3" } }
{"director": "Baird, Stuart", "genre": ["Action", "Crime", "Thriller"], "year": 1998, "actor": ["Downey Jr., Robert", "Jones, Tommy Lee", "Snipes, Wesley", "Pantoliano, Joe", "Jacob, Ir\u00e8ne", "Nelligan, Kate", "Roebuck, Daniel", "Malahide, Patrick", "Richardson, LaTanya", "Wood, Tom", "Kosik, Thomas", "Stellate, Nick", "Minkoff, Robert", "Brown, Spitfire", "Foster, Reese", "Spielbauer, Bruce", "Mukherji, Kevin", "Cray, Ed", "Fordham, David", "Jett, Charlie"], "title": "U.S. Marshals"}
{ "index" : { "_index": "movies", "_id" : "4" } }
{"director": "Ray, Nicholas", "genre": ["Drama", "Romance"], "year": 1955, "actor": ["Hopper, Dennis", "Wood, Natalie", "Dean, James", "Mineo, Sal", "Backus, Jim", "Platt, Edward", "Ray, Nicholas", "Hopper, William", "Allen, Corey", "Birch, Paul", "Hudson, Rochelle", "Doran, Ann", "Hicks, Chuck", "Leigh, Nelson", "Williams, Robert", "Wessel, Dick", "Bryar, Paul", "Sessions, Almira", "McMahon, David", "Peters Jr., House"], "title": "Rebel Without a Cause"}

아래명령어를 사용해 movies 도메인에 업로드한다.

curl -XPOST -u 'master-user:master-user-password' 'domain-endpoint/_bulk' --data-binary @bulk_movies.json -H 'Content-Type: application/json'

 

 

3단계 : 도메인에서 문서 검색

Elasticsearch 검색 API를 사용 또는 Kibana 를 사용 하여 도메인의 문서를 검색

movies 도메인에서 mars 단어를 검색

curl -XGET -u 'master-user:master-user-password' 'domain-endpoint/movies/_search?q=mars&pretty=true'

kibana를 이용하여 검색할 경우

브라우저에서 Amazon ES 도메인 용 Kibana 플러그인을 가리 킵니다. Amazon ES 콘솔의 도메인 대시 보드에서 Kibana 엔드 포인트를 찾을 수 있습니다. URL은 다음 형식을 따릅니다.


 

 

 

AWS Elasticsearch : 완전관리형 Elasticsearch 서비스로 오픈 소스 Elasticsearch API, 관리형 Kibana, Logstash 및 기타 AWS 서비스와의 통합 및 내장 경고 및 SQL 쿼리를 지원

장점

간편한 배포 및 관리 : 몇분만에 Elasticsearch 클러스터를 배포

확장성 및 가용성 : 단일 클러스터에 데이터를 최대 3PB까지 저장할 수 있어 단일 Kibana 인터페이스를 통해 대규모 로그 분석 워크로드를 실행할 수 있음.

보안 : VPC로 네트워크 격리. KMS 적용. 

 

 

 

참고 : www.elastic.co/kr/what-is/elasticsearch

참고 : www.elastic.co/guide/en/elasticsearch/reference/current/elasticsearch-intro.html

반응형