티스토리 뷰
날짜 타입 (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
불리언은 true 와 false 두가지 값을 갖는 필드 타입입니다. 선언은 "type": "boolean" 로 합니다. "true" 와 같이 문자열로 입력이 되어도 true 로 해석이 되어 저장됩니다. 불리언 필드를 사용 할 때는 일반적으로 term 쿼리를 이용해서 검색을 합니다.
참고
'ELK 스택' 카테고리의 다른 글
Elasticsearch - 인덱스 매핑과 데이터 타입 날짜, 객체, 위치정보 (3) (0) | 2022.11.07 |
---|---|
Elasticsearch - 인덱스 매핑과 데이터 타입 날짜, 객체, 위치정보 (2) (0) | 2022.11.07 |
Elasticsearch - 인덱스 매핑과 데이터 타입 문자열, 숫자 (2) (0) | 2022.11.07 |
Elasticsearch - 인덱스 매핑과 데이터 타입 문자열, 숫자 (1) (0) | 2022.11.07 |
Elasticsearch - 사용자 정의 애널라이저 (Custom Analyzer) (0) | 2022.11.07 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 명령어
- mysql은 nl이 기본 세팅
- index 처리를 잘하자
- React18
- config
- string
- ArrayList
- Linux
- GIT
- Elasticsearch
- Query
- Java
- Mappings
- EL
- kibana
- Mapping
- 키바나
- NextJS 14
- logstash
- 문자
- InteiilJ
- bool
- pm2-logrotate
- list
- 인덱스
- react
- ElasticSearach 백업
- 절대 경로 설정하기
- 재색인
- literal sql
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함