필드 타입 (Field Types)

필드 타입 (Field Types)

모든 필드는 필드 데이터 타입(field data type), 줄여서 필드 타입(field type)을 가집니다. 이 타입은 필드가 담는 데이터의 종류(예: 문자열, 불리언 값)와 그 용도를 알려줘요. 예를 들어 문자열은 textkeyword 필드 모두에 인덱스할 수 있는데요, text 필드 값은 전문 검색(full-text search)을 위해 분석되지만 keyword 문자열은 필터링과 정렬을 위해 그대로 유지됩니다.

필드 타입은 패밀리(family)별로 묶입니다. 같은 패밀리에 속한 타입은 검색 동작이 정확히 같지만, 저장 공간 사용이나 성능 특성은 다를 수 있습니다.

현재 패밀리는 keywordtext 두 개입니다. 다른 타입 패밀리는 필드 타입이 하나뿐이에요. 예를 들어 boolean 패밀리는 boolean 필드 타입 하나로만 이루어집니다.

일반 타입 (Common types)

객체·관계형 타입 (Objects and relational types)

  • object — JSON 객체.
  • flattened — JSON 객체 전체를 하나의 필드 값으로.
  • nested — 하위 필드 간의 관계를 보존하는 JSON 객체.
  • join — 같은 인덱스 안의 문서에 부모/자식 관계를 정의.
  • passthrough — 하위 필드에 대해 같은 레벨의 별칭을 제공.

구조화된 데이터 타입 (Structured data types)

  • Rangelong_range, double_range, date_range, ip_range 같은 범위 타입.
  • ip — IPv4와 IPv6 주소.
  • version — 소프트웨어 버전. 시맨틱 버저닝 우선순위 규칙을 지원.
  • murmur3 — 값의 해시를 계산하고 저장.

집계 데이터 타입 (Aggregate data types)

  • aggregate_metric_double — 사전 집계된(pre-aggregated) 메트릭 값.
  • histogram — T-Digest 또는 HDRhistogram 형태의 사전 집계된 숫자 값.
  • exponential_histogram — 지수 히스토그램 형태의 사전 집계된 숫자 값.
  • tdigest — T-Digest 형태의 사전 집계된 숫자 값.

텍스트 검색 타입 (Text search types)

  • text 필드text, match_only_text, pattern_text를 포함한 text 패밀리. 분석된, 비구조화된 텍스트.
  • annotated-text — 특수 마크업이 포함된 텍스트. 명명된 개체(named entities) 식별에 사용.
  • completion — 자동 완성(auto-complete) 제안에 사용. completion suggester에 대한 자세한 내용은 Suggester 예시를 참고하세요.
  • search_as_you_type — 입력하는 즉시 완성(as-you-type)을 위한 text류 타입.
  • semantic_text시맨틱 검색 수행에 사용.
  • token_count — 텍스트의 토큰 개수.

문서 랭킹 타입 (Document ranking types)

  • dense_vector — float 값으로 이루어진 밀집 벡터(dense vector)를 기록.
  • sparse_vector — float 값으로 이루어진 희소 벡터(sparse vector)를 기록.
  • rank_feature — 쿼리 시점에 히트를 부스팅할 숫자 피처를 기록.
  • rank_features — 쿼리 시점에 히트를 부스팅할 숫자 피처들을 기록.

공간 데이터 타입 (Spatial data types)

  • geo_point — 위도·경도 포인트.
  • geo_shape — 다각형 같은 복잡한 도형.
  • point — 임의의 직교 좌표계(cartesian) 포인트.
  • shape — 임의의 직교 좌표계 도형.

기타 타입 (Other types)

배열 (Arrays)

Elasticsearch에서 배열은 전용 필드 데이터 타입이 필요하지 않습니다. 기본적으로 모든 필드는 값 0개 이상을 가질 수 있는데요, 단 배열 안의 모든 값은 같은 필드 타입이어야 해요. Arrays 문서를 참고하세요.

멀티 필드 (Multi-fields)

같은 필드를 서로 다른 목적으로 여러 방식으로 인덱스하면 유용할 때가 많습니다. 예를 들어 string 필드를 전문 검색용 text 필드로 매핑하면서, 동시에 정렬이나 집계용 keyword 필드로도 매핑할 수 있죠. 또는 텍스트 필드를 standard 분석기, english, french 분석기로 각각 인덱스할 수도 있습니다.

이게 바로 멀티 필드(multi-fields)가 존재하는 이유입니다. 대부분의 필드 타입은 fields 파라미터를 통해 멀티 필드를 지원합니다.