Elasticsearch Data Type

By | 2022년 7월 7일
Table of Contents

Elasticsearch Data Type

타입종류

데이타 타입 용도
text 전문 텍스트 (full text) 검색용. analyzer 를 적용할 수 있다.
keyword 형태소 분석을 하지 않는다.
byte, short, integer, long 바이트 또는 숫자.
float, double 부동 소수점.
date 날짜. 밀리세컨드까지 포함한다.
boolean 불린.
list 리스트. 리스트 각 데이타는 타입이 동일해야 한다.
nested 중첩된 데이타 타입.

money

{
  "mappings": {
    "properties": {
      "number_of_bytes": {
        "type": "integer"
      },
      "time_in_seconds": {
        "type": "float"
      },
      "price": {
        "type": "scaled_float",
        "scaling_factor": 100
      }
    }
  }
}

샘플

date_optional_time 이 꽤 좋다.
yyyy-MM-dd'T'HH:mm:ss.SSS 이 놈은 밀리세컨드 자릿수까지 예민한데,
date_optional_time 이 놈은 밀리세컨드가 있던없던 다 들어간다.

{
  "settings": {
    "number_of_shards": 1,
    "max_ngram_diff": 20,
    "number_of_replicas": 0,
    "analysis": {
      "tokenizer": {
        "my_ngram_tokenizer": {
          "type": "ngram",
          "min_gram": 1,
          "max_gram": 20,
          "token_chars": [
            "letter",
            "digit",
            "punctuation"
          ]
        }
      },
      "analyzer": {
        "my_ngram_analyzer": {
          "type": "custom",
          "tokenizer": "my_ngram_tokenizer",
          "filter": [
            "lowercase"
          ]
        }
      }
    }
  },
  "mappings": {
    "properties": {
      "itemId": {
        "type": "integer"
      },
      "category": {
        "type": "keyword"
      },
      "itemName": {
        "type": "text",
        "analyzer": "whitespace",
        "search_analyzer": "my_ngram_analyzer"
      },
      "sellCash": {
        "type": "scaled_float",
        "scaling_factor": 100
      },
      "limitNumber": {
        "type": "integer"
      },
      "regDate": {
        "type": "date",
        "format":"yyyy-MM-dd'T'HH:mm:ss.SSS||date_optional_time"
      },
      "productBrandInfo": {
        "type": "nested",
        "properties": {
          "brandName" : {
            "type": "text"
          },
          "brandLogo": {
            "type": "keyword"
          }
        }
      }
    }
  }
}

답글 남기기