[Elasticsearch] Date Format & Logback Timestamp Format
Elastic/Elasticsearch 2021. 10. 6. 12:18Elasticsearch 에서 data field 를 이용해서 range 질의를 하기 위해서는 format 을 잘 맞춰 줘야 합니다.
Springboot 로 개발 한 WAS 에서 로그를 JSON 으로 찍으면서 timestamp 값에 대한 format 기 위한 설정에 대해서 기록 합니다.
참고문서)
https://www.elastic.co/guide/en/elasticsearch/reference/current/date.html
https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-range-query.html
http://logback.qos.ch/manual/layouts.html
Logback Timestamp Format & JSON 설정)
https://jjeong.tistory.com/1570
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
<layout class="ch.qos.logback.contrib.json.classic.JsonLayout">
<timestampFormat>yyyy-MM-dd'T'HH:mm:ss.SSS'Z'</timestampFormat>
<timestampFormatTimezoneId>Asia/Seoul</timestampFormatTimezoneId>
<appendLineSeparator>true</appendLineSeparator>
<jsonFormatter class="ch.qos.logback.contrib.jackson.JacksonJsonFormatter">
<prettyPrint>true</prettyPrint>
</jsonFormatter>
</layout>
</encoder>
</appender>
Timestamp Formet Index)
{
"mappings": {
"properties": {
"timestamp": {
"type": "date",
"format": "strict_date_optional_time||epoch_millis",
"ignore_malformed": true
}
}
}
}
위 foramt 설정은 별도로 하지 않아도 기본 설정 됩니다.
Document Put)
{
"timestamp" : "2021-10-06T11:33:46.855Z"
}
Range Query )
[Case 1]
{
"query": {
"range" : {
"ts": {
"gte": "2021-10-06T11:33:36.000Z",
"lte": "2021-10-06T11:34:38.000Z"
}
}
}
}
[Case 2]
{
"query": {
"range" : {
"ts": {
"gte": "2021-10-06 11:33:36.000",
"lte": "2021-10-06 11:34:38.000",
"format": "yyyy-MM-dd HH:mm:ss.SSS"
}
}
}
}
결국 입력 값이 정확 하면 질의 시 format 을 지정해서 편하게 검색이 가능 합니다.