매핑 파라미터 (Mapping Parameters)
매핑 파라미터 (Mapping Parameters)
필드 매핑은 타입뿐 아니라 여러 파라미터로 동작을 세밀하게 조정할 수 있어요. text처럼 분석을 거치는 필드는 분석기·부스팅을, keyword·수치 필드는 null 처리나 길이 제한 같은 옵션을 붙이게 돼요. 이번 장에서는 자주 쓰는 매핑 파라미터를 한눈에 정리해 볼게요.
자주 쓰는 매핑 파라미터
analyzer—text필드가 index·query 때 쓸 분석기.search_analyzer— 검색(query) 시에만 쓸 분석기 (기본은analyzer).boost— 해당 필드의 검색 관련성 가중치.coerce— 타입 변환이 가능한 값(예: 문자열 숫자)을 자동 변환.copy_to— 값을 다른 필드로 복사해 그룹 검색용 필드를 만듦.doc_values— 정렬·집계·스크립트용 컬럼 저장(기본 켜짐).dynamic— 새 필드가 나타났을 때 매핑에 자동 추가 여부.enabled— 필드를 매핑·인덱싱하지 않고 metadata로만 보관.format—date필드의 날짜 형식.ignore_above—keyword필드에서 이 길이를 넘는 문자열은 인덱싱하지 않음.ignore_malformed— 형식이 어긋난 값을 무시하고 계속 처리.index— 필드를 검색 가능하게 만들지 여부.meta— 필드에 임의의 메타데이터 저장.norms— 정규화 점수 저장 여부(점수가 필요 없으면 꺼서 메모리 절약).null_value— null 대신 저장할 기본값.position_increment_gap— 같은 필드에 여러 키워드가 들어갈 때 사이 간격.properties— 객체(object) 필드의 하위 필드 정의.similarity— 관련성 점수 계산에 쓸 유사도 알고리즘(BM25 등).subobjects— 하위 필드를 객체 단위로 평평하게 매핑할지.store— 원본 값을 별도 저장해 검색 결과에 재사용.term_vector— 하이라이팅·제안을 위해 용어 벡터를 저장할지.
파라미터 적용 예시
하나의 필드에 여러 파라미터를 조합하는 실제 매핑 예시를 볼게요.
PUT /my-index-000001
{
"mappings": {
"properties": {
"title": {
"type": "text",
"analyzer": "standard",
"boost": 1.5
},
"sku": {
"type": "keyword",
"ignore_above": 256
},
"views": {
"type": "integer",
"null_value": 0
},
"description": {
"type": "text",
"copy_to": "all_text"
},
"all_text": {
"type": "text"
}
}
}
}
title은standard분석기로 쪼개고 검색 점수를 1.5배로 높여요.sku는 256자 초과 값을 무시해서 키워드 필드가 비대해지는 걸 막아요.views는 null이 들어오면 0으로 저장해요.description은all_text로 복사해 여러 필드를 한 번에 검색할 수 있게 해요.
파라미터 선택 팁
- 검색 결과에 점수를 안 쓴다면
norms: false로 메모리를 아껴요. - 정렬·집계 안 쓰는 필드는
doc_values: false로 저장 공간을 줄여요. - 분석이 필요 없는 정확 값은
keyword에ignore_above를 함께 쓰는 게 흔해요. analyzer와search_analyzer를 다르게 하면 인덱싱과 검색 시 처리를 분리할 수 있어요.