Elasticsearch date foramt
elasticsearch date 날짜에 사용할 수 있는 형식들 알아보기
Es에서 사용할 수 있는 형식은 Date math 표현, 이미 가지고 있는(built in formats) 규격 형식들과 커스텀 형식 이렇게 총 3가지로 나누어진다.
1. Date math expression
Date Math 에 대해서는 예전에 작성한 포스팅 참고!
2. Built in Formats
아래의 형식 이름 앞에 "strict_" 을 붙여주면 사용하면 모든 year, month, day 가 자리수는 엄격하게 맞추어라~ 의미가 된다. Ex.2022/2/10으로 작성하면 에러가 나고 2022/02/10 처럼 "0"을 넣어주어야 한다. -> 이 방법은 dynamic mapping할 때 불필요한 string값이 Date로 자동 설정되지 않도록 할 때 유용한다.
ex) strict_date_optional_time
이 외에도 굉장히 많은 형식들이 존재한다! -> es doc
Mapping되어 있지 않은 인덱스에 위의 형식들의 날짜 데이터를 입력할 때 모두 데이터로 자동 매핑되지않는다. 때문에 아래처럼 index 생성 시에 mapping을 함께 해주면 된다.
PUT test_date_format
{
"mappings": {
"properties": {
"testDate": {
"type": "date",
"format": "yyyyMMdd||strict_date_optional_time"
}
}
}
}
3. Custom date format
index 생성 시 mappings에 날짜 형식을 내가 사용할 커스텀 형식을 설정해 준다.
PUT test_date2
{
"mappings": {
"properties": {
"testDate": {
"type":"date",
"format": "dd/MM/yyyy"
}
}
}
}
데이터 입력하기
POST test_date2/_doc
{
"testDate": "11/11/2022"
}
사용자 정의 형식은 내가 정한 것만 데이터가 입력되고 그 외의 형식들 (yyyy-MM-dd 등) 은 입력하게되면 오류가 난다.
다른 예제
PUT test_date2
{
"mappings": {
"properties": {
"testDate": {
"type":"date",
"format": "dd/MM/yyyy||yyyy년MM월dd일HH시mm분ss초"
}
}
}
}
데이터 입력
POST test_date2/_doc
{
"testDate": "2022년10월11일10시22분33초"
}
검색 결과
"hits" : [
{
"_index" : "test_date2",
"_type" : "_doc",
"_id" : "mPBLZYQBlQUEkepaewXs",
"_score" : 1.0,
"_source" : {
"testDate" : "2022년10월11일10시22분33초"
}
},
{
"_index" : "test_date2",
"_type" : "_doc",
"_id" : "7fBLZYQBlQUEkepaxwVB",
"_score" : 1.0,
"_source" : {
"testDate" : "11/11/2022"
}
}
]
Reference : https://www.elastic.co/guide/en/elasticsearch/reference/current/mapping-date-format.html
'Elasticsearch' 카테고리의 다른 글
Elasticsearch 결과에 "_ignored" 가 나오는 이유 (0) | 2023.10.17 |
---|---|
[Elasticsearch] Aggregations 집계 총정리 (0) | 2022.11.10 |
[Elasitcsearch] Pipeline-Aggregation 개념 및 예제 (0) | 2022.11.10 |
[Elasticsearch] bucket sub-aggregation 하위 집계 (0) | 2022.11.10 |
[Elasticsearch] Bucket Aggregations 버킷 집계 정리 (0) | 2022.11.10 |