ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Elasticsearch 기초(1)
    IT/Elasticsearch 2023. 9. 6. 22:35

    Elasticsearch란 정확히 무엇인가요?

    Elasticsearch는 오픈소스로 제공되는 실시간 분산 검색 및 분석 엔진입니다. 주로 중앙 집중식 로그나 이벤트 데이터를 탐색하고 분석하는데 사용되며, 풀 텍스트 검색 기능도 제공합니다. JSON 형식의 문서를 저장하고 능숙하게 처리하여 검색할 수 있으며, 구조화되지 않은 데이터로부터 실시간으로 정보를 추출하고 시각화하는데 매우 유용합니다.



    Elasticsearch가 어떻게 동작하나요?

    Elasticsearch는 내부적으로 Apache Lucene을 기반으로 동작합니다. Lucene은 고성능, 전문 검색 라이브러리로, Elasticsearch는 이를 통해 고급 검색 기능을 제공합니다.

     

    문서 색인(인덱스)

    Elasticsearch에서 데이터는 JSON 문서의 형태로 저장되며, 이 문서들은 색인이라는 저장 공간에 저장됩니다. 색인는 유사한 특성을 가진 문서들의 모음이라고 볼 수 있습니다. 데이터를 Elasticsearch에 저장할 때 해당 데이터는 인덱싱되어 분석되고, 이 분석된 데이터는 역색인(Reverse Indexing)이라는 구조에 저장됩니다. 이 역색인을 통해 Elasticsearch는 매우 빠른 검색을 제공할 수 있습니다.

     

    검색

    Elasticsearch는 RESTful API를 제공하며, 이 API를 통해 다양한 검색 쿼리를 사용 할 수 있습니다. 쿼리는 HTTP 요청의 본문에 JSON 형식으로 제공되며, Elasticsearch는 이 쿼리를 처리하여 결과를 반환합니다.

     

     

    분산처리

    Elasticsearch는 데이터를 클러스터 안의 여러 노드에 분산 저장하므로, 단일 노드에서 처리할 수 없는 대규모 데이터를 처리할 수 있습니다. 또한, 클러스터 내의 노드는 서로 데이터를 복제하므로, 하나의 노드가 실패하더라도 데이터 손실 없이 작업을 계속할 수 있습니다.

     

     

     

    문서는 어떻게 구성되나요?

    Elasticsearch에서 "문서"는 관계형 데이터베이스의 행과 유사한 기본 데이터 단위 역할을 합니다. 이러한 문서는 JSON 개체로 표현되는 다양한 데이터 구조로 구성됩니다. 고정된 표 형식과 달리 Elasticsearch의 문서는 동적 스키마를 수용할 수 있어 중첩, 배열 기반 또는 null 데이터 유형도 허용합니다.

    필드의 역할
    반면에 "필드"는 문서 내의 포함되는 최소 단위입니다. 이는 기존 데이터베이스의 열에 해당하며 JSON 문서 내의 키-값 쌍이 특징입니다. 필드에는 텍스트, 숫자 데이터, 날짜, 지리적 위치 등 다양한 데이터 유형이 포함될 수 있습니다.

    필드와 문서가 시너지를 이루는 방법
    필드와 문서 간의 상호 작용은 Elasticsearch 운영 효율성의 핵심입니다. 

    문서는 본질적으로 인덱싱되고 쿼리되는 원자 요소인 다양한 필드를 포함하는 컨테이너 역할을 합니다. 

    예를 들어 직원의 정보를 나타내는 문서가 있는 경우 해당 문서 내의 필드에는 '이름', '연령', '직위' 및 '급여'와 같은 속성이 포함될 수 있습니다.

    인덱스 매핑(mapping)
    인덱스 매핑은 Elasticsearch에서 스키마 정의 역할을 하며 필드와 문서 간의 관계를 이해하는 데 중추적인 역할을 합니다. 이 매핑은 필드 유형을 기술하여 Elasticsearch가 데이터를 인덱싱하고 쿼리에 응답하는 방식을 최적화할 수 있도록 해줍니다.

     

    주목할만한 특징

    중첩 필드

    Elasticsearch는 중첩 필드를 허용하여 JSON 배열과 같은 더 복잡한 데이터 구조를 가능하게 합니다.
    분석된 필드 및 분석되지 않은 필드: 텍스트 분석을 수행하도록 필드를 구성하여 보다 정확한 검색 결과를 얻을 수 있습니다. 반대로 분석되지 않은 필드는 데이터를 필터링하고 집계하는 데 유용합니다.

     

    동적 매핑

    Elasticsearch는 문서에 있는 필드의 데이터 유형을 동적으로 추론하는 기능을 제공하여 데이터 수집에 유연성을 제공합니다.

     

     

     

     

     

     

    Elasticsearch와 Kibana

    단순한 텍스트 검색을 넘어 Elasticsearch는 실행 가능한 인사이트를 제공하기 위해 광범위한 시각화 도구를 제공합니다.

    오픈 소스 데이터 시각화 플러그인인 Kibana는 사용자가 복잡한 쿼리와 차트를 구성하여 데이터를 면밀히 조사할 수 있도록 제공하는 프로그램입니다.

    Elasticsearch와 Kibana의 공생 관계는 데이터 저장과 데이터 시각화 모두를 위한 포괄적인 시스템을 제공합니다.

    Elasticsearch 성능 최적화: 확장성을 위한 미세 조정
    Elasticsearch의 강력한 기능은 기본 설정에만 국한되지 않습니다. 엄청난 양의 데이터로 어려움을 겪고 있는 조직을 위해 Elasticsearch는 처리량과 성능을 증폭시킬 수 있는 다양한 구성 옵션을 제공합니다.

    샤딩: 샤딩 기술을 통해 Elasticsearch는 여러 서버에 걸쳐 데이터를 분산할 수 있습니다. 각 샤드는 독립적인 인덱스로 작동하여 컴퓨팅 및 스토리지 부하를 분산시킵니다.

    복제: 데이터 손실을 방지하고 고가용성을 보장하기 위해 Elasticsearch는 샤드 복제를 지원합니다. 그 결과 탄력적인 데이터 중복성을 확보하고 예기치 않은 하드웨어 장애로부터 시스템을 강화할 수 있습니다.

    캐시 관리: Elasticsearch는 필터 캐시, 필드 데이터 캐시, 요청 캐시와 같은 다양한 캐싱 메커니즘을 신중하게 활용하여 쿼리 응답을 신속하게 처리합니다. 이러한 캐시 설정을 조정하면 시스템 성능에서 중추적인 이점을 제공할 수 있습니다.



    요약하자면, Elasticsearch는 다양한 유형의 정형 및 비정형 데이터를 처리하는 데 필수적인 다면적이고 탄력적인 검색 및 분석 엔진으로 기능합니다. 그 기능은 단순한 키워드 기반 검색을 넘어 방대한 양의 데이터에서 중요한 인사이트를 얻기 위한 방대한 범위의 복잡한 쿼리와 분석 작업을 포괄합니다.

     


    Elasticsearch 색인 프로세스

    Elasticsearch는 문서의 기본 단위인 JSON 형태로 작동합니다. Elasticsearch 문서 색인 시 문서의 필드는 토큰이라고 하는 더 작은 조각으로 나뉘며 그 다음에는 실제로 색인에 보관되어 신속하게 검색할 수 있습니다. 이 프로세스를 토큰화라고 합니다.

    Elasticsearch는 분석기(Analyzer)라는 매우 중요한 역할을 하는 도구을 제공합니다.  분석기는 문서를 검색 가능한 형태로 만드는 역할을 합니다. 분석기는 크게 토크나이저와 토큰 필터로 구성되어 있습니다. 

     

     

    토크나이저

    토크나이저는 입력된 텍스트를 개별적인 '토큰'으로 나눕니다.

    예를 들어, "나는 밥을 먹었다"라는 문장이 있다면, 토크나이저는 이를 "나는", "밥을", "먹었다"로 나눌 수 있습니다.

     

     

    토큰 필터

    토크나이저가 나눈 토큰을 추가로 가공합니다. 소문자로 변경하거나, 불필요한 단어를 제거하는 등의 작업을 이 단계에서 합니다.

    예: "나는" -> "나", "사과를" -> "사과", "좋아한다" -> "좋아하다"

     

     

     토크나이저와 토큰 필터를 거친 이후, Elasticsearch는 이러한 정보를 '역색인'이라고 하는 특별한 구조에 저장합니다.

     

    역색인(Reverse Index)

    역색인이란 키워드를 기준으로 어떤 문서에 그 키워드가 들어있는지 쉽게 찾을 수 있게 해주는 목록입니다. 사실상 '찾아보기' 목록과 같은 것입니다. 일반적으로, 우리는 문서를 먼저 찾고 그 안의 키워드를 찾지만, 역색인은 그 반대입니다. 키워드를 먼저 알고 있으면, 그 키워드가 어떤 문서에 있는지 바로 알 수 있습니다. 예를 들어, "사과"라는 키워드가 1, 3, 7번 문서에 있다면, 역색인은 이 정보를 빠르게 제공해줄 수 있습니다. 이 색인 방법은 기존의 페이지 중심 패러다임(문서 -> 키워드)을 키워드 중심 패러다임(키워드 -> 문서)으로 반전시키므로 '반전'이라는 용어가 사용됩니다.

     

     

    'IT > Elasticsearch' 카테고리의 다른 글

    Elasticsearch 색인 Blue-Green 스위칭 전략(1)  (0) 2023.09.05
Designed by Tistory.