티스토리 뷰


Elasticsearch 에는 여러 데이터 타입이 있지만, 그 중 String 타입은 5.0 부터 textkeyword 로 분리되었습니다.


- text: 설명 혹은 길이가 긴 텍스트가 있는 필드에서 전문 검색(full-text) 가 필요한 경우이며, 색인 전에 분석(analyze)을 거쳐 전문 검색(full-text) 에 활용됩니다.

- keyword: 문자열 필드 분석(analyze)이 가능한 타입이며, 해당 타입은 정렬 / 필터링 / 집계 기능을 지원합니다.


각각 데이터 타입은 5.0 이전 버전에서는 analyzednot_analyzed 로 지원되던 기능입니다.


version < 5.0 (이전)  text 타입

{
  "foo": {
    "type" "string",
    "index": "analyzed"
  }
}

version >= 5.0 (이후) text 타입

{
  "foo": {
    "type" "text",
    "index": true
  }
}

version < 5.0 (이전) keyword 타입

 {
  "foo": {
    "type" "string",
    "index": "not_analyzed"
  }
}

version >= 5.0 (이후) keyword 타입

{
  "foo": {
    "type" "keyword",
    "index": true
  }
}


전문 검색(full-text) 이 필요 없는 필드는 되도록 keyword 타입으로 사용하는게 좋습니다. (되도록 필드는 직접 매핑)

댓글