데이터 색인이란?

📌 데이터 색인(Indexing)이란 문서를 검색 가능하도록 변환하는 과정을 의미합니다. Elasticsearch와 같은 검색 엔진에서는 원본 문서를 분석하여 검색어 토큰으로 변환한 후 저장하는 과정을 거칩니다. 이를 통해 빠른 검색 및 분석이 가능해집니다.


색인(Indexing)과 검색(Search)의 차이

검색 엔진에서 색인(Indexing)과 검색(Search)은 별개의 과정입니다. 다음과 같은 주요 개념을 이해해야 합니다.

용어 설명

색인(Indexing) [동사] 원본 문서를 분석하여 검색 가능한 형태로 변환하는 과정
인덱스(Index) [명사] 색인된 데이터를 저장하는 논리적 저장소
검색(Search) 인덱스에 저장된 데이터를 찾아서 반환하는 과정
질의(Query) 검색을 수행하기 위해 사용자가 입력하는 검색 조건

Elasticsearch에서의 색인 과정

Elasticsearch에서 색인은 다음과 같은 단계를 거칩니다.

원본 데이터 ➡️ 색인(Indexing) ➡️ 인덱스(Index)에 저장 ➡️ 검색(Search)
  1. 문서 수집
    • 데이터 소스로부터 문서를 가져옴 (예: 로그 파일, 데이터베이스, API 등).
  2. 분석(Analysis)
    • 토큰화(Tokenization): 문장을 단어 단위로 분리.
    • 필터링(Filtering): 불필요한 단어 제거, 형태소 분석, 동의어 처리 등.
  3. 색인 저장
    • 분석된 데이터를 Elasticsearch의 인덱스에 저장.
  4. 검색(Search)
    • 사용자의 질의(Query)에 따라 인덱스를 조회하고 결과 반환.

색인 예제

Elasticsearch에서 색인을 수행하는 기본적인 API 사용법은 다음과 같습니다.

(1) 문서 색인 (Indexing a Document)

PUT /my_index/_doc/1
{
  "title": "Elasticsearch 색인 개요",
  "content": "색인은 문서를 검색 가능하도록 변환하는 과정입니다."
}
  • my_index: 생성할 인덱스 이름.
  • _doc/1: 문서 ID(1).
  • 본문(title, content)이 색인됨.

(2) 색인된 데이터 검색 (Search)

GET /my_index/_search
{
  "query": {
    "match": {
      "content": "검색"
    }
  }
}
  • "content": "검색"을 포함하는 문서를 검색.

색인 시 고려해야 할 사항

(1) 매핑(Mapping) 설정

  • 색인을 수행하기 전에 문서의 데이터 타입을 지정하는 것이 중요합니다.
  • keyword, text, date, integer 등 다양한 데이터 유형을 지원합니다.
PUT /my_index
{
  "mappings": {
    "properties": {
      "title": { "type": "text" },
      "date": { "type": "date" },
      "views": { "type": "integer" }
    }
  }
}

(2) 분석기(Analyzer) 사용

  • Elasticsearch는 기본적으로 **표준 분석기(Standard Analyzer)**를 사용하지만, 데이터 유형에 따라 사용자 정의 분석기를 설정할 수 있습니다.
PUT /my_index
{
  "settings": {
    "analysis": {
      "analyzer": {
        "korean_analyzer": {
          "type": "custom",
          "tokenizer": "seunjeon_tokenizer"
        }
      }
    }
  }
}
  • 한국어 분석기를 적용하여 색인할 수 있음.

색인의 장점과 단점

항목 장점 단점

빠른 검색 속도 색인된 데이터는 최적화된 구조로 저장되어 빠르게 검색 가능 색인 과정에서 추가적인 저장 공간 필요
강력한 검색 기능 전문 검색(Full-Text Search), 유사 검색, 동의어 검색 가능 색인 데이터 변경 시 전체 문서를 다시 색인해야 하는 경우 발생
확장성(Scalability) 분산 환경에서 대량의 데이터 색인 가능 색인 전략을 잘못 설정하면 성능 저하 가능

결론

데이터 색인은 Elasticsearch의 핵심 기능으로, 검색 속도를 높이고 효율적인 데이터 분석을 가능하게 합니다.
색인 과정을 최적화하기 위해 적절한 매핑(Mapping)과 분석기(Analyzer) 설정이 필요하며, 문서의 변경 및 업데이트 시 성능 영향을 고려해야 합니다. 🚀

 

'Elastic Search > Elastic Search 이론' 카테고리의 다른 글

[Elasticsearch] 형태소 분석  (0) 2025.02.01

+ Recent posts