매핑 파라미터 (Mapping Parameters)

매핑 파라미터 (Mapping Parameters)

필드 매핑은 타입뿐 아니라 여러 파라미터로 동작을 세밀하게 조정할 수 있어요. text처럼 분석을 거치는 필드는 분석기·부스팅을, keyword·수치 필드는 null 처리나 길이 제한 같은 옵션을 붙이게 돼요. 이번 장에서는 자주 쓰는 매핑 파라미터를 한눈에 정리해 볼게요.

출처: Mapping parameters — Elasticsearch Guide

자주 쓰는 매핑 파라미터

  • analyzertext 필드가 index·query 때 쓸 분석기.
  • search_analyzer — 검색(query) 시에만 쓸 분석기 (기본은 analyzer).
  • boost — 해당 필드의 검색 관련성 가중치.
  • coerce — 타입 변환이 가능한 값(예: 문자열 숫자)을 자동 변환.
  • copy_to — 값을 다른 필드로 복사해 그룹 검색용 필드를 만듦.
  • doc_values — 정렬·집계·스크립트용 컬럼 저장(기본 켜짐).
  • dynamic — 새 필드가 나타났을 때 매핑에 자동 추가 여부.
  • enabled — 필드를 매핑·인덱싱하지 않고 metadata로만 보관.
  • formatdate 필드의 날짜 형식.
  • ignore_abovekeyword 필드에서 이 길이를 넘는 문자열은 인덱싱하지 않음.
  • 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"
      }
    }
  }
}
  • titlestandard 분석기로 쪼개고 검색 점수를 1.5배로 높여요.
  • sku는 256자 초과 값을 무시해서 키워드 필드가 비대해지는 걸 막아요.
  • views는 null이 들어오면 0으로 저장해요.
  • descriptionall_text로 복사해 여러 필드를 한 번에 검색할 수 있게 해요.

파라미터 선택 팁

  • 검색 결과에 점수를 안 쓴다면 norms: false로 메모리를 아껴요.
  • 정렬·집계 안 쓰는 필드는 doc_values: false로 저장 공간을 줄여요.
  • 분석이 필요 없는 정확 값은 keywordignore_above를 함께 쓰는 게 흔해요.
  • analyzersearch_analyzer를 다르게 하면 인덱싱과 검색 시 처리를 분리할 수 있어요.

더 알아보기