Opensearch
Opensearch는 AWS가 Elasticsearch 7.10을 기반으로 fork한 검색 및 분석 엔진이다.
기본적으로 대량의 데이터를 저장, 검색, 분석하는 데 사용되며, 분산 검색 엔진 기능을 제공한다.
OpenSearch
OpenSearch is a community-driven, Apache 2.0-licensed open source search and analytics suite that makes it easy to ingest, search, visualize, and analyze data.
opensearch.org
주요 특징
- Elasticsearch와 호환 -> 기본적인 API 및 사용법이 유사하다.
- 100% 오픈 소스 -> Apache 2.0 License
- 내장 보안 기능 -> Elasticsearch에서는 유료였던 X-Pack 기능이 일부 내장되어 있다.
- 확장 가능한 플러그인 지원 -> 보안, 모니터링, 머신러닝 등
- 대체 UI -> Elastic Stack의 Kibana 대신 Opensearch Dashboards 사용
Opensearch vs. Elasticsearch
Elasticsearch 최신 버전에서는 라이선스 제한이 많아졌고, Opensearch는 무료로 기능을 제공하면서 AWS 주도로 발전 중이다.
| Opensearch | Elasticsearch | |
| 출시 주체 | AWS | Elastic N.V. |
| 라이선스 | Apache 2.0 | Elastic License |
| 보안 기능 | 기본 제공 | 유료 (X-Pack) |
| Query DSL | Elasticsearch 7.0 기준 동일 | 최신 버전에서 변경 |
| UI | Opensearch DashBoards | Kibana |
| ML 지원 | Anomaly Detection 제공 | 유료 기능 포함 |
Opensearch 주요 개념
(1) 클러스터 구조
Opensearch는 분산 아키텍처를 사용하여 대량 데이터를 효울적으로 저장하고 검색한다.
클러스터는 여러 개의 노드로 구성되며, 각 노드는 특정 역할을 수행한다.
- 노드 유형
* Master Node: 클러스터 상태 관리, 노드 추가/제거, 인덱스 관리
* Data Node: 실제 데이터를 저장하고 검색 요청을 처리
* Ingest Node: 데이터 전처리 (파이프라인) 수행
* Coordinating Node: 검색 요청을 라우팅하고 결과를 종합
- 샤드(Shard)와 복제본(Replica)
* 샤드 (Shard): 대량 데이터를 분할하여 저장하는 단위
* 복제본 (Replica): 샤드의 사본으로, 장애 발생 시 데이터 보호 및 성능을 향상
(2) 문서(Document)와 인덱스(Index)
Opensearch에서는 데이터를 JSON 문서 형태로 저장하고, 인덱스를 통해 검색 성능을 최적화한다.
- 인덱스 관련 개념
* Mapping: 문자열, 숫자, 날짜 등의 필드 타입을 정의
* Analyzer: 텍스트를 토큰화하고 처리하는 방법을 설정
* Dynamic Mapping: 자동으로 필드 타입을 지정
(3) 검색 (Query DSL)
Opensearch에서는 Query DSL을 사용해 데이터를 검색한다. (Elasticsearch 7.10의 쿼리 방식과 동일)
- 예시
GET opensearch_index/_search
{
"query": {
"match": {
"title": "Opensearch"
}
}
}
* match: 특정 필드에서 키워드 검색
* bool: AND, OR 조건 조합
* range: 숫자나 날짜 범위 검색
(4) Opensearch DashBoards
Elasticsearch의 Kibana를 대체하는 UI로, 데이터 시각화, 인덱스 관리, 대시보드 기능을 제공한다.
로컬에서는 기본포트로 5601을 사용한다.
- 주요 기능
* 쿼리 작성 및 테스트
* 로그 및 메트릭 모니터링
* 대시보드 생성
* 보안 설정 관리
(5) Opensearch Plugin
Security: 인증, 권한 관리. Role-based Access Control(RBAC)
Alerting: 특정 조건 발생 시 알림을 보내는 기능
Anomaly Detection: 머신 러닝을 활용한 이상 탐지 기능
Index Management: 인덱스 자동 관리
SQL Plugin: SQL 쿼리 사용 가능