OpenSearch 4

[OpenSearch] - 5. 직접 OpenSearch 클러스터 구성해보기

이번에는 직접 이전 블로그 포스팅 했던 내용을 기반으로 클러스터를 구성해보려고 한다. 위와 같이 구성하였으며 클러스터 매니저 노드를 위한 서버 1개, 데이터&인제스터 노드 2개, 코디네이터 전용 노드 1개로 총 4개의 서버를 이용하였다. AMI를 이용한 서버 생성 우선 하나의 ec2 서버를 생성하고 OpenSearch를 설치한다. 이때 실행은 하지 않는다. 아래 글을 참고한다. 실행은 하지 않으며 systemctl service에 등록만 한다. 2023.12.27 - [Data Engineering/Distributed System] - EFK(ELK) 구축 해보기!! (서버 로그 수집) - 4. OpenSearch와 Open Dashboard 설치하기 EFK(ELK) 구축 해보기!! (서버 로그 수집)..

[OpenSearch] - 4. 분산 아키텍처 & 각 노드 역할과 샤드

이전에는 OpenSearch가 어떻게 개별 쿼리나 인덱스에 대해 어떻게 처리되는지를 알아봤다면 이번에는 어떠게 대량의 인덱스와 쿼리들을 안정적으로 처리하는 지를 알아보려 한다. OpenSearch 분산 아키텍처 OpenSearch는 아래 요소들로 구성된다. Cluster (클러스터) Node (노드) Shard (샤드) Segment (세그먼트) 클러스터는 노드의 집합을 말한다. 그리고 노드는 클러스터를 구성하는 하나의 인스턴스로, 도큐먼트가 저장되는 곳이다. 하나의 가상 서버로 보아도 된다. 클러스터는 도큐먼트를 여러 노드에 분산시켜 저장할 수 있다. 모든 노드는 클러스터의 인덱싱과 도큐먼트 검색에 참여한다. 모든 노드가 같은 기능을 수행하는 것은 아니다. 노드에도 다양한 타입이 있으며, 이 타입에 따..

[OpenSearch] - 3. Inverted Index ( 역인덱스 )

Opensearch의 인덱싱은 검색 효율을 높이기 위해 데이터를 구조화하는 방법이다. 이번에는 이 방법에 대해 자세히 알아보려고 한다. Inverted Index OpenSearch의 빠른 검색 성능은 역인덱스로부터 나온다. 역인덱스의 목적은 효율적이고 빠른 전문 검색이 가능하게 하는 것이다. 전문 검색은 특정 단어가 포함된 문서를 찾아내는 검색 방식을 말한다. 기존 RDBMS에서는 전문 검색을 하면 레코드 하나하나씩 테이블 전체를 풀스캔하기에 속도가 느리다. OpenSearch는 토큰화된 역인덱스 데이터에 대해 쿼리를 진행하기에 빠르다. 역인덱스는 필드 수준에서 작동하기에 각 Text 타입 필드마다 하나씩 가지고 있다. 위 그림은 도큐먼트를 추가할 때 character filter -> tokenize..

[OpenSearch] - 1. OpenSearch 구조와 동작방식 알아보기 & CRUD 등 여러 동작 실습하기

OpenSearch 구성 요소 opensearch는 RDBMS와 사용하는 용어가 다르다. 테이블 -> 인덱스 레코드 -> 도큐먼트 컬럼 -> 필드 스키마 -> 매핑 인덱스란 말이 어색할 수도 있는데, RDBMS에서 인덱스는 보통 빠른 검색을 위해 유니크한 값을 주는 것이었다면, 여기서는 테이블과 같은 데이터들이 모여있는 것을 말하며 인덱싱은 검색 엔진에서 빠른 검색을 위해 데이터를 구조화하는 방법을 말한다. 그래서 데이터가 들어오면 인덱싱을 한 후에 인덱스에 저장된다. 그리고 이 인덱싱 전에 매핑이 일어난다. 매핑 정의에 따라 입력받은 도큐먼트를 OpenSearch가 이해할 수 있는 데이터 구조로 변환하는 과정이다. 어떤 타입들이 있는지는 공식문서에서 확인 가능하다. https://opensearch.o..