ElasticSearch 일 별 index 생 성 방법 2 가지

4196 단어 Elastic
로 그 는 일정 일수 만 유지 하고 기한 이 지나 면 삭제 해 야 한 다 는 요구 에 자주 부 딪 힌 다.물론 무한 대 를 저장 하고 있다 면 이 글 을 무시 하 세 요.주:다음은 Date math 를 사용 합 니 다.
1.사용Delete By Query API부실
Delete By Query API 는 문 서 를 검색 하고 삭제 할 수 있 습 니 다.이 방법 을 사용 하면 모든 로그 가 하나의 index 에 있 고 만 료 된 로 그 를 검색 하여 삭제 하 는 것 입 니 다.예 를 들 면:
POST twitter/_delete_by_query
{
    "query": {
        "range" : {
            "@timestamp" : {
                "lt" :  "now-30d/d"
            }
        }
    }
}

가능 하지만 다음 과 같은 문제 가 존재 합 니 다.1.검색 은 추가 적 인 성능 소 모 를 초래 할 수 있 습 니 다.특히 로 그 량 이 많 을 때.2.30 일의 로 그 는 하나의 index 에 있어 성능 에 영향 을 줍 니 다.
2.사용RolloverRollover Index 는 별명 을 통 해 번호 가 있 는 index 를 생 성 합 니 다.예 를 들 면:
# PUT / with URI encoding:
PUT /%3Clogs-%7Bnow%2Fd%7D-000001%3E
{
  "aliases": {
    "logs_write": {}
  }
}
# Add 1000+ doc, or run the next day
POST /logs_write/_rollover 
{
  "conditions": {
    "max_age":   "1d",
    "max_docs":  1000
  }
}

이 방법의 원 리 는 사실 1.당일 날짜 와 번 호 를 가 진 indexlogs-2017.06.18-000001를 새로 만 드 는 것 이다.2.이 index 에 별명 을 지정 합 니 다logs_write.3.logs_write가 가리 키 는 index 가 rollover 의 조건 을 만족 시 키 는 지 확인 하고 만족 하면 다음 index 를 새로 만 들 고 별명 을 새로운 index 로 바 꿉 니 다.4.당일 문서 수가 초과 되 어 다음 index,번호+1,즉logs-2017.06.18-000002를 새로 만 듭 니 다.5.하루 가 지나 면 다음 index,날짜+1,번호+1,즉logs-2017.06.19-000002를 새로 만 듭 니 다.6.logs_write최신 index 를 영원히 가리 키 기 때문에 로 그 를 쓰 면 index 의 번 호 를 고려 하지 않 고 영원히 쓸 수 있 습 니 다logs_write.조심 하 세 요!POST /logs_write/_rollover이 동작 은 Elastic Search 내 에 만들어 진 정시 메커니즘 이 아 닙 니 다!즉,정기 적 으로 실행POST /logs_write/_rollover하지 않 으 면 현재 index 는 기한 이 지나 거나 문서 수가 초과 되 더 라 도 rollover 가 되 지 않 습 니 다.
3.Date Math 사용 하기
제2 장의 방법 은 기 존의 index 의 날짜 화 문 제 를 해결 하 는 만능 적 인 방법 이다.새로운 index 라면 더욱 간단 합 니 다.Date Math 가 있 는 index 에 문 서 를 직접 제출 하면 됩 니 다.예 를 들 어:
# PUT / with URI encoding:
PUT /%3Clogs-%7Bnow%2Fd%7D%3E
{ "key": "value" }

logstash 가 제출 한 로그 라면 다음 과 같이 설정 합 니 다.
output {
    elasticsearch {
        hosts => ["127.0.0.1"]
        index => "logs-%{+YYYY.MM.dd}"
        document_type => "logs_type"
    }
}

이렇게 하면 자동 으로 매일 index 를 생 성 할 수 있다.이 날짜 형식 은 반드시YYYY.MM.dd이 어야 우리 가 자주 사용 하 는 형 태 를 얻 을 수 있 습 니 다.예 를 들 어 2017.6.26 과 같은 날 짜 는YYYY.mm.dd또는YYYY.MM.DD모두 안 됩 니 다.
4.만 료 로그 삭제
두 가지 방법 으로 만 료 로 그 를 삭제 하 는 방법 은 매우 간단 하 며,계획 작업 을 작성 하여 정기 적 으로 실행 하면 된다.예 를 들 면:
# DELETE / with URI encoding:
DELETE /%3Clogs-%7Bnow-30d%2Fd%7D*%3E

그리고Delete By Query에 비해 전체 index 를 직접 삭제 하 는 방법 이 빠르다.

좋은 웹페이지 즐겨찾기