multi-field

homewiz·2025년 7월 2일

Elastic Search

목록 보기
4/5

개요

맵핑에 따른 검색 방식

multi-field

multi-field는 기본적으로 text 필드 → 분석(토큰화)되어 부분검색·유사검색에 쓰이고

  • 같은 데이터를 keyword 서브필드에 저장 →
  • 정확 1:1 매칭, 정렬, 집계에 쓸 수 있도록

동일 데이터를 두 방식으로 동시에 색인하기 위해 사용하는 매핑 기법입니다.

"nickname": {
  "type": "text",
  "fields": {
    "keyword": { "type": "keyword" }
  }
}

ES 내부적으로는 nickname 필드에 대해 analyzer가 적용된 inverted index

nickname.keyword 필드에 대해 exact string으로 저장된 inverted index를 동시에 만들어두는 구조입니다.

✅ 한줄 요약

multi-field = 같은 데이터를 text + keyword 2개로 분리 색인해서

  • 부분검색 (like)
  • 정확검색 (term)
  • 정렬, 집계

모두를 한꺼번에 커버한다

text-field

"nickname": { "type": "text" }

만 선언하면:

ES는 nickname을 analyzer 로 분석해서 토큰화합니다

따라서 match 나 match_phrase 검색에는 잘 동작

예: “홍길동” → “홍”, “길”, “동” 토큰으로 색인

하지만

  • term 검색 (정확 매칭)
  • 정렬 (sort)
  • 집계 (aggregation)

에서는 text 필드만으로는 불가능 합니다.
왜냐하면 text 필드는 정확히 “홍길동”이라는 원본 문자열을 인덱스에 저장하지 않고, 분석된 토큰으로만 저장하기 때문이에요.

차이점

구분text (단독)text + keyword (multi-field)
유사검색 (match)가능가능
부분검색가능가능
정확검색 (term)불가능keyword 필드로 가능
정렬 (sort)불가능keyword 필드로 가능
집계 (aggregation)불가능keyword 필드로 가능
사용 용도자유 검색 전용검색 + 정확매칭 + 집계 + 정렬 모두 지원

한줄 정리

multi-field = text + keyword
→ 검색(유사/부분) + term(정확) + 정렬 + 집계까지 모두 가능하게 해주는 방식

0개의 댓글