데이터 색인이란?
📌 데이터 색인(Indexing)이란 문서를 검색 가능하도록 변환하는 과정을 의미합니다. Elasticsearch와 같은 검색 엔진에서는 원본 문서를 분석하여 검색어 토큰으로 변환한 후 저장하는 과정을 거칩니다. 이를 통해 빠른 검색 및 분석이 가능해집니다.
색인(Indexing)과 검색(Search)의 차이
검색 엔진에서 색인(Indexing)과 검색(Search)은 별개의 과정입니다. 다음과 같은 주요 개념을 이해해야 합니다.
용어 설명
색인(Indexing) [동사] | 원본 문서를 분석하여 검색 가능한 형태로 변환하는 과정 |
인덱스(Index) [명사] | 색인된 데이터를 저장하는 논리적 저장소 |
검색(Search) | 인덱스에 저장된 데이터를 찾아서 반환하는 과정 |
질의(Query) | 검색을 수행하기 위해 사용자가 입력하는 검색 조건 |
Elasticsearch에서의 색인 과정
Elasticsearch에서 색인은 다음과 같은 단계를 거칩니다.
원본 데이터 ➡️ 색인(Indexing) ➡️ 인덱스(Index)에 저장 ➡️ 검색(Search)
- 문서 수집
- 데이터 소스로부터 문서를 가져옴 (예: 로그 파일, 데이터베이스, API 등).
- 분석(Analysis)
- 토큰화(Tokenization): 문장을 단어 단위로 분리.
- 필터링(Filtering): 불필요한 단어 제거, 형태소 분석, 동의어 처리 등.
- 색인 저장
- 분석된 데이터를 Elasticsearch의 인덱스에 저장.
- 검색(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 |
---|