티스토리 뷰

날짜 타입 (date)

  • 자동으로 날짜로 인식하는 형식 : ISO8601
  • format 옵션을 이용한 날짜 형식 지정

객체 타입 (object, nested)

  • object 와 nested 타입 비교
  • nested 쿼리 이용

위치 정보 타입 (geo_point, geo_shape)

  • geo_point 가 지원하는 다양한 입력 형식
  • 위치정보 쿼리 : geo_distance, geo_bounding_box

# mapping 조회
GET my_date/_mapping

# mapping -> properties -> date -> "type" : "date"
PUT my_date/_doc/1
{
  "date" : "2019-06-12T17:13:40"
}

# mapping -> properties -> date -> "type" : "text"
# mapping -> properties -> date -> fields -> keyword -> "type" : "keyword", "ignore_above" : 256
PUT my_date/_doc/2
{
  "date" : "12/Aug/2020:01:24:44"
}

# 인덱스 삭제
DELETE my_date

# format 지정
PUT my_date
{
  "mappings": {
    "properties": {
      "date":{
        "type": "date",
        "format": "dd/MMM/yyyy:HH:mm:ss||iso8601||epoch_millis"
      }
    }
  }
}

#"2019-09-13 12:00:00의 epoch_millis 값인 1568332800000
# 데이터 넣기
PUT my_date/_doc/1
{
	"date" : 1568332800000
}
정의된 포맷들은 Elastic 홈페이지의 공식 도큐먼트 https://www.elastic.co/guide/en/elasticsearch/reference/current/mapping-date-format.html 페이지에서 볼 수 있으며, joda 심볼 기호들은 다음과 같습니다.
심볼
의미
예) 2019-09-12T17:13:07.428+09:00
yyyy
년도
2019
MM
월 - 숫자
09
MMM
월 - 문자 (3자리)
Sep
MMMM
월 - 문자 (전체)
September
dd
12
a
오전 / 오후
PM
HH
시각 (0~23)
17
kk
시각 (01~24)
17
hh
시각 (01~12)
05
h
시각 (1~12)
5
mm
분 (00~59)
13
m
분 (0~59)
13
ss
초 (00~59)
07
s
초 (0~59)
7
SSS
밀리초
428
Z
타임존
+0900 / +09:00
e
요일 (숫자 1:월 ~ 7:일)
4
E
요일 (텍스트)
Thu
날짜 필드는 입력된 값들을 실제로 내부에서는 모두 long 형태의 epoch_millis 로 저장합니다. 또한 매핑의 format 형식만 지정 해 놓으면 지정된 어떤 형식으로도 색인 및 쿼리가 가능합니다. 다시 말해 _source 의 날짜 는 "2019-09-12" 형식으로 입력 되었어도 "2019/09/12" 형식으로 range 쿼리를 해도 정상적으로 동작합니다. range 쿼리는 5장 검색에서 확인 하시기 바랍니다.
다음은 앞에서 선언한 my_date 인덱스에 "date_val": "2019-09-12 15:01:23" 인 도큐먼트를 입력하고 "2019/09/10" 보다 크고 "2019-09-13 12:00:00" 의 epoch_millis 값인 1568332800000 보다 작은 값을 검색하는 쿼리입니다.

 

 

GET my_date/_search
{
  "query": {
    "range": {
		"date": {
        	"gte": "2019-06-01",
            "lte": "2019-07-01"
        }
    }
  }
}

GET my_date/_search
{
  "query": {
    "range": {
		"date": {
        	"gte": "2019-06-01",
            "lte": "2020-08-20"
        }
    }
  }
}

GET my_date/_search
{
  "query": {
    "range": {
		"date": {
        	"gte": "2019-09-01",
            "lte": "2020-08-20"
        }
    }
  }
}


GET my_date/_search
{
  "query": {
    "range": {
      "date_val": {
        "gt": "2019/09/10",
        "lt": 1568332800000
      }
    }
  }
}

엘라스틱서치는 mappings 에 설정한 format 에 걸리면 다  저장하기에 그 값에 따라서 계산을 합니다.

모든 데이터를 저장할때 source를 바꾸지는 않지만 search를 할때 range 에 맞춰서 저장을 합니다.


불리언 - boolean

불리언은 truefalse 두가지 값을 갖는 필드 타입입니다. 선언은 "type": "boolean" 로 합니다. "true" 와 같이 문자열로 입력이 되어도 true 로 해석이 되어 저장됩니다. 불리언 필드를 사용 할 때는 일반적으로 term 쿼리를 이용해서 검색을 합니다.

 

 

참고

 

 

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
글 보관함