인덱스명에 날짜연산 지원

날짜연산은 모든 시간적 인덱스를 검색한 뒤 결과를 필터링하거나, 또는 관련 별칭을 유지하여 검색하지 않고 시간적 인덱스의 범위를 검색할 수 있게 해줍니다. 검색하고자 하는 인덱스의 수를 줄이는 것은 클러스터의 부하를 줄이고 성능을 높이는데 도움이 됩니다. 예로 일자별 로그에서 에러를 검색하고자 할 경우 직전 2일간의 내용만 검색한다면 날짜연산을 사용하여 수행할 수 있습니다.

대부분의 API는 index파라미터가 있으며, index의 값에 날짜연산을 적용할 수 있습니다.

날짜연산의 경우에는 다음과 같은 형식을 가지게 됩니다.

<static_name{date_math_expr{date_format|time_zone}}>
  • static_name 인덱스명의 고정된 이름 부분
  • date_math_expr 날짜를 동적으로 계산할 날짜연산 표현식
  • date_format 선택사항으로 계산된 날짜의 출력형식 (기본값 : YYYY.MM.dd)
  • time_zone 선택사항으로 타임존 (기본값 : utc)

필히 날짜연산은 꺽쇠괄호 내에 존재해야하며, 모든 특수문자는 URI인코딩이 처리되어야 합니다. 예로들어,

# GET /<logstash-{now/d}>/_search
curl -XGET 'localhost:9200/%3Clogstash-%7Bnow%2Fd%7D%3E/_search?pretty' -d'
{
  "query" : {
    "match": {
      "test": "data"
    }
  }
}'

날짜연산에 주로 사용되는 특수문자 인코딩

  • < %3C
  • > %3E
  • / %2F
  • { %7B
  • } %7D
  • | %7C
  • + %2B
  • : %3A

아래는 다른 형태의 날짜 계산식이 포함된 인덱스 명칭들이며, 최종 표현된 인덱스명은 현재 시간인 2024년 3월 22일 UTC 기준으로 하겠습니다.

Expression Resolves to
<logstash-{now/d}> logstash-2024.03.22
<logstash-{now/M}> logstash-2024.03.01
<logstash-{now/M{YYYY.MM}}> logstash-2024.03
<logstash-{now/M-1M{YYYY.MM}}> logstash-2024.02
`<logstash-{now/d{YYYY.MM.dd +12:00}}>` logstash-2024.03.23

인덱스 이름 템플릿에 {}를 사용하기 위해서는 백슬래시 \ 를 사용하시면 됩니다.

results matching ""

    No results matching ""