필드 타입 (Field Types)
필드 타입 (Field Types)
모든 필드는 필드 데이터 타입(field data type), 줄여서 필드 타입(field type)을 가집니다. 이 타입은 필드가 담는 데이터의 종류(예: 문자열, 불리언 값)와 그 용도를 알려줘요. 예를 들어 문자열은 text와 keyword 필드 모두에 인덱스할 수 있는데요, text 필드 값은 전문 검색(full-text search)을 위해 분석되지만 keyword 문자열은 필터링과 정렬을 위해 그대로 유지됩니다.
필드 타입은 패밀리(family)별로 묶입니다. 같은 패밀리에 속한 타입은 검색 동작이 정확히 같지만, 저장 공간 사용이나 성능 특성은 다를 수 있습니다.
현재 패밀리는 keyword와 text 두 개입니다. 다른 타입 패밀리는 필드 타입이 하나뿐이에요. 예를 들어 boolean 패밀리는 boolean 필드 타입 하나로만 이루어집니다.
일반 타입 (Common types)
binary— Base64 문자열로 인코딩된 바이너리 값.boolean—true와false값.- 키워드(Keywords) —
keyword,constant_keyword,wildcard를 포함한 keyword 패밀리. - 숫자(Numbers) — 수량을 표현하는 데 쓰는
long,double같은 숫자 타입. - 날짜(Dates) —
date와date_nanos를 포함한 날짜 타입. alias— 기존 필드의 별칭(alias)을 정의.
객체·관계형 타입 (Objects and relational types)
object— JSON 객체.flattened— JSON 객체 전체를 하나의 필드 값으로.nested— 하위 필드 간의 관계를 보존하는 JSON 객체.join— 같은 인덱스 안의 문서에 부모/자식 관계를 정의.passthrough— 하위 필드에 대해 같은 레벨의 별칭을 제공.
구조화된 데이터 타입 (Structured data types)
- Range —
long_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)
percolator— Query DSL로 작성된 쿼리를 인덱스.
배열 (Arrays)
Elasticsearch에서 배열은 전용 필드 데이터 타입이 필요하지 않습니다. 기본적으로 모든 필드는 값 0개 이상을 가질 수 있는데요, 단 배열 안의 모든 값은 같은 필드 타입이어야 해요. Arrays 문서를 참고하세요.
멀티 필드 (Multi-fields)
같은 필드를 서로 다른 목적으로 여러 방식으로 인덱스하면 유용할 때가 많습니다. 예를 들어 string 필드를 전문 검색용 text 필드로 매핑하면서, 동시에 정렬이나 집계용 keyword 필드로도 매핑할 수 있죠. 또는 텍스트 필드를 standard 분석기, english, french 분석기로 각각 인덱스할 수도 있습니다.
이게 바로 멀티 필드(multi-fields)가 존재하는 이유입니다. 대부분의 필드 타입은 fields 파라미터를 통해 멀티 필드를 지원합니다.