OpenSearch란?
OpenSearch는 ElasticSearch 기반 오픈 소스 검색 및 분석 제품군이다. 주로 어플리케이션 모니터링, 로그 분석 및 시각화와 같은 곳에서 쓰이고 있다.
AWS Opensearch 설치
OpenSearch를 사용하려면, domain을 먼저 세팅해야한다. 여기서 domain은 OpenSearch의 클러스터이다.
콘솔을 활용한 domain 생성
1. AWS 콘솔에 로그인한 후, Amazon OpenSearch Service로 진입한다.
2. Create domain을 클릭한다.
3. domain 세팅에 필요한 정보들을 입력한다.여기서는 테스트용 domain이기 때문에 t3.small.search의 인스턴스 유형을 세팅하고, 퍼블릭 엑세스에 마스터 계정을 생성하였다. 만약 사용하려는 domain이 보안에 신경써야한다면, vpc를 이용해야한다.
4. 생성 버튼을 누른다. 이 때 domain 생성까지 약 15분 정도 소요가 된다.
OpenSearch 관련 용어
OpenSearch에서 사용하는 용어들이다.
용어 | 설명 |
index | 테이블과 유사한 개념, 문서가 저장되는 저장소 |
document | 데이터와 유사한 개념 |
filed | 열과 유사한 개념 |
document 업로드
domain에 데이터를 업로드하는 방법은 크게 두 가지가 있다. 첫번째는 curl 통신을 이용한 document 업로드하는 방법이고, 두번째는 opensearch 라이브러리를 활용한 document를 업로드하는 방법이다. 여기서는 node.js 환경에서 라이브러리를 활용해 document를 업로드한다.
curl을 이용한 document 업로드
curl 통신을 할 경우 직접 id를 지정해야한다. 단일 document를 업로드할 때 적합한 방법이지만, 대량의 로그를 지속적으로 document를 업로드할 때는 라이브러리를 이용하는 것이 편리하다.
curl -XPUT -u 'master-user:master-user-password' 'domain-endpoint/domainname/_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'
opensearch.js 라이브러리를 이용한 document 업로드
라이브러리 설치 및 세팅
- npm에서 라이브러리를 설치한다.
npm i @opensearch-project/opensearch
- 라이브러리를 import 한다.
const { Client } = require('@opensearch-project/opensearch');
- domain 경로 세팅을 한다.
const host = 'domainHost'; // domain host
const auth = 'master:masterPassword'; // 이 마스터 ID와 비밀번호는 보안상 코드에 직접 작성보다는 환경 변수에 세팅하는 것을 권장한다.
const opensearchHost = `https://${auth}@host`;
- opensearch domain 객체를 생성한다.
- ssl 인증이 필요한 경우 ssl 인증서 경로를 node 하단에 추가하면 된다.
const client = new Client({node: opensearchHost});
index 생성
const createIndex = await client.indices.create({index: 'test'});
index에 document 추가
const document = {
title: 'The Outsider',
author: 'Stephen King',
year: '2018',
genre: 'Crime fiction',
};
const id = '1'; // 필수값 아님 ID가 없으면 임의의 ID가 배정됨
const createDocument = await client.index({
id: id,
index: 'test',
body: document,
});
document 검색
- domain에 전송된 document를 검색하기 위해서는 두 가지 방법을 사용할 수 있다. curl 통신을 이용하여 검색 API를 호출하는 방법이고, 두번째는 OpenSearch DashBoard를 활용하는 방법이다.
curl을 이용한 document 검색
curl -XGET -u 'master-user:master-user-password' 'domain-endpoint/domainname/_search?q=mars&pretty=true'
OpenSearch DashBoard를 활용한 검색
1. 아래 url로 DashBoard에 접속한다.
<https://domain-endpoint/_dashboards/>
2. 마스터 ID와 비밀번호를 입력한다.
3. Management > Stack Management로 이동한다.
4. index pattern을 생성한다.
5. OpenSearch Dashboards > discover로 이동한다.
6. document fileds를 확인한다.
'개발' 카테고리의 다른 글
EC2 인스턴스에 AWS Cloud watch Agent 설치하기 (0) | 2022.10.14 |
---|---|
AWS OpenSearch mapper_parsing_exception Trouble shooting (0) | 2022.10.12 |
Airflow에 BigQuery 연동하기 (0) | 2022.10.07 |
Django에서 AWS SES를 활용한 이메일 보내기 (0) | 2022.10.06 |
Django에 Zappa 세팅하기 (0) | 2022.10.05 |