728x90
TEXT와 KEYWORD 타입 모두 문자열을 처리하기 위한 타입
KEYWORD 타입
- 특징: 분석(analysis) 없이 원본 문자열 그대로 저장됨.
- 사용 용도: 정렬, 집계(aggregation), 필터링(filtering) 등에 적합
- 검색 방식: 전체 문자열이 하나의 토큰으로 저장되서 전체 문자열 검색
{
"mappings": {
"properties": {
"category": {
"type": "keyword"
}
}
}
}
- 위에 형태로 매핑한 경우 "category": "Web Development"라는 데이터를 저장하면 검색 시 "Web"이나 "Development"로는 검색되지 않고 "Web Development" 전체 일치해야 검색
- 사용 적합 예시 : 국가코드, UUID, 로그 레벨 등
TEXT 타입
- 특징: 분석(analysis)을 거쳐 토큰화(tokenization) 후 저장됨.
- 사용 용도: 전문 검색(full-text search)에 적합.
- 검색 방식: 토큰화된 개별 단어 기준으로 검색 가능.
{
"mappings": {
"properties": {
"description": {
"type": "text"
}
}
}
}
- 위 설정에서 "description": "Web Development is fun"이라는 데이터를 저장하면, "Web"이나 "Development"로도 검색 가능.
- 사용 적합 예시 : 글 제목, 설명
KEYWORD vs TEXT 비교
KEYWORD | TEXT | |
분석기 사용 | X | O |
검색 방식 | 전체 일치 | 부분 검색 가능 |
졍렬 가능 | 가능 | 불가능 |
집계 가능 | 가능 | 불가능 |
필터링용 | 적합 | 부적합 |
KEYWORD / TEXT 동시 사용 가능
문자열을 동적 매핑하는 경우 TEXT와 KEYWORD 타입이 모두 생성되고, 정적 매핑하여 동시에 생성해서 같이 사용이 가능하다.
{
"mappings": {
"properties": {
"title": {
"type": "text",
"fields": {
"raw": {
"type": "keyword"
}
}
}
}
}
}
- "title" 필드는 전문 검색용 (TEXT / "title": "Web Development" → "Web"이나 "Development"로 검색 가능)
- "title.raw" 필드는 필터링, 정렬, 집계용 (KEYWORD / "title.raw": "Web Development" → 전체 일치 검색 및 정렬 가능)
마무리
- KEYWORD가 TEXT타입보다 색인이 더 빠르게 됨 (TEXT는 토크나이징이 진행되기 때문)
- 굳이 토크나이징이 필요하지 않은 필드 같은 경우에는 KEYWORD로 정적 매핑 설정해서 사용하면 성능에 도움이 됨 필요한 타입을 적재적소로 정적 매핑하여 사용하는 것이 좋음
'ELK' 카테고리의 다른 글
[ELK] 엘라스틱서치 Alias (0) | 2025.02.08 |
---|---|
[ELK] 엘라스틱서치 샤드 (0) | 2025.02.03 |
[ELK] index [.async-search] blocked by: [TOO_MANY_REQUESTS/12/disk usage exceeded flood-stage watermark, index has read-only-allow-delete block] 발생시 처리 (0) | 2022.02.08 |
[ELK] 로그스태시 설치 (0) | 2021.12.31 |
[ELK] 키바나 설치 (0) | 2021.12.28 |