2013-04-02 2 views
0

저는 elasticsearch를 로그에 사용합니다. 일일 인덱스를 사용하여 cron 작업과 함께 삭제하는 대신 TTL을 사용하고 싶습니다. 나는 값을 가진 TTL을 활성화하고 설정했다 : 30s. 이 작업을 보내면 성공적으로 답변을 얻을 수 있으며 매핑 요청을 할 때 TTL 값 (밀리 초)을 볼 수 있습니다. 모든 좋은 것 같습니다하지만 문서가 삭제되지 않습니다 ...Elasticsearch TTL이 작동하지 않습니다.

_mapping :

{ 
    "logs" : { 
     "webservers" : { 
      "_ttl" : { 
       "default" : 30000 
      }, 
      "properties" : { 
       @timestamp" : {   
        "type" : "date", 
        "format" : "dateOptionalTime" 
       } 
      } 
     } 
    } 
} 
+0

일부 데이터의 색인을 생성 한 후에 get 매핑은 무엇을 반환합니까? '_ttl'은 색인을 생성 한 다른 필드와 함께 있습니까? 그건 그렇고, 당신은 logstash를 사용하고 있습니까? – javanna

+0

매핑 명령은 다른 필드와 함께 { "_ttl": { "default": 30000}을 반환합니다. 예, 매일 새로운 색인을 만들지 않아도 logstach를 사용하고 있습니다. – Matt

답변

1

나는 그냥 기본적으로 비활성화되어 당신의 유형에 대한 _ttl를 활성화해야합니다 같아요. 보세요 here.

{ 
    "webservers" : { 
     "_ttl" : { "enabled" : true, "default" : "30s" } 
    } 
} 
+0

이미이 쿼리를 실행했지만 동일한 문제가 있습니다. – Matt

+0

방금 ​​테스트 해본 결과 저에게 효과적이었습니다. 내가 알아 차 렸던 한가지 : 맵핑 API를 사용하면 나를 다시 사용할 수 있습니다 : 사실입니다. json의 일부가 현재 elasticsearch에 의해 소화되었다고 확신합니까? 어쩌면 오타가 있었을 것입니까? 한 가지 더 : 자신의 인덱스에서 logstash를 사용하여 색인을 생성하고 있습니다. 정확히 어떻게합니까? – javanna

+0

맞습니다. "enabled"를 true 또는 false로 설정하면 매핑 결과가 항상 동일한 결과를 반환하기 때문에이 기능을 활성화하는 데 문제가 있습니다. TTL 값만 반환합니다. 색인을 만들려면 색인 이름 "logstash - % ..."를 "logs"로 바꿨습니다. 정보를 얻으려면 Kibana를 사용하여 로그를보고 잘 작동합니다 (로그 스타트 형식이 필요합니다). – Matt

관련 문제