엘라스틱서치 쿼리 및 인덱싱 아키텍처

Elasticsearch란 무엇인가요?

ElasticsearchApache Lucene 라이브러리를 기반으로 구축된 분산형 오픈 소스 검색 및 분석 엔진입니다. Elasticsearch는 또한 벡터 검색 및 검색 보강 생성(RAG)을 제공하여 현대 AI 애플리케이션을 원활하게 지원합니다. 애플리케이션은 JSON 페이로드를 Elasticsearch 클러스터에 전송하여 정의된 스키마가 있든 없든 구성된 데이터와 비구성된 데이터를 Elasticsearch에 저장할 수 있습니다.

Elasticsearch 아키텍처

Elasticsearch 클러스터의 주요 구성 요소는 다음과 같습니다:

문서

문서는 Elasticsearch에 의해 저장되는 정보의 가장 작은 기록이며 JSON으로 표현됩니다. 문서는 서로 다른 유형의 여러 필드(키-값 쌍)로 구성되며, 미리 정의된 스키마를 가질 수 있거나 스키마가 없을 수 있으며, 인덱싱된 새로운 필드의 데이터 유형을 유추합니다.

인덱스

인덱스는 동일한 스키마를 가진 문서의 논리적 모음으로, 인덱스 이름으로 식별됩니다.

샤드

Elasticsearch 인덱스는 문서의 모음인 관리 가능한 단위인 샤드로 분할됩니다. 샤드는 검색의 기본 단위이며, 중복성과 장애 내성을 위해 여러 노드에 복제됩니다.

노드

노드는 Elasticsearch의 독립적인 인스턴스로, 하나 이상의 인덱스에 속하는 샤드 집합을 관리합니다. 노드는 데이터 노드, 마스터 노드, 인저스트 노드와 같이 다른 역할을 가질 수 있습니다.

클러스터

Elasticsearch 클러스터는 상호 연결된 노드 집합입니다. 클러스터의 모든 노드는 클라이언트 요청을 처리하고 서로 통신할 수 있습니다. 클러스터 내 각 노드는 인덱스에 속하는 샤드의 일부를 소유합니다.

쿼리 아키텍처

다음 아키텍처 다이어그램은 검색 요청의 흐름을 보여줍니다:

  1. 사용자 또는 응용프로그램이 검색 쿼리를 생성합니다. 쿼리는 클러스터 내의 모든 노드에서 처리될 수 있습니다. 요청을 처리하는 노드는 “조정” 노드입니다.
  2. 조정 노드는 관련된 모든 샤드와 해당 복제본에 쿼리를 브로드캐스트합니다.
  3. 각 샤드는 로컬에서 쿼리를 실행하고 조정 노드에 가벼운 결과 세트를 반환합니다.
  4. 조정 노드는 받은 결과를 병합합니다. 이것이 “쿼리” 단계의 끝입니다. 쿼리 단계는 검색 결과를 구성하는 베어본 문서를 식별하지만, 전체 문서는 여전히 검색되어야 합니다.
  5. 조정 노드는 소유 샤드에 검색 요청을 보내어 결과 집합의 문서를 보강합니다.
  6. 보강된 문서는 조정 노드로 반환됩니다.
  7. 순위 및 보강된 전체 검색 결과 집합이 호출자에게 반환됩니다.

색인 아키텍처

다음 아키텍처 다이어그램은 색인 요청의 흐름을 설명합니다:

  1. 사용자는 Elasticsearch에서 색인할 JSON 문서를 보냅니다. 문서가 이미 존재하는 경우 새 필드가 추가되고 기존 필드가 덮어씌워집니다. 요청을 먼저 받는 노드는 “조정” 노드입니다.
  2. 조정 노드는 들어오는 문서의 기본 샤드를 식별합니다. 일반적으로 문서 ID를 기반으로하고 기본 샤드를 소유한 데이터 노드로 요청을 전달합니다.
  3. 기본 샤드는 작업을 검증하고 로컬에서 실행합니다.
  4. 기본 샤드는 그런 다음 모든 레플리카에게 작업을 병렬로 전달합니다.
  5. 레플리카 샤드는 자체 노드에서 작업을 로컬로 적용합니다.
  6. 단계 6, 7 및 8은 레플리카 샤드에서 기본 샤드로, 조정 노드로, 호출자로부터의 쓰기 확인을 보여줍니다.

결론

이 기사는 Elasticsearch 클러스터의 다양한 구성 요소를 설명합니다: 문서, 색인, 샤드 및 노드. 또한 검색 요청 및 색인 요청의 수명을 개요로 설명합니다. 유연한 아키텍처로 클러스터가 확장될 때 노드를 추가하거나 제거하기 쉽습니다. 스키마 없는 색인 및 AI 검색 기능 지원과 결합되어 대량의 데이터를 실시간으로 효율적으로 저장, 검색 및 분석해야 하는 조직에 대한 Elasticsearch를 사실상의 표준으로 만듭니다.

Source:
https://dzone.com/articles/elasticsearch-query-and-indexing-architecture